bridge.utils.safe_pickle#
Module Contents#
Classes#
Unpickler that only allows safe built-in types to prevent arbitrary code execution. |
|
Unpickler that allows safe builtins and the narrow set of numpy types needed for object array reconstruction. |
Functions#
Deserialize from a file using a restricted unpickler that only allows safe types. |
|
Deserialize pickle data using a restricted unpickler that only allows safe types. |
|
Load a |
Data#
API#
- bridge.utils.safe_pickle._BUILTIN_SAFE_TYPES#
‘frozenset(…)’
- class bridge.utils.safe_pickle._RestrictedUnpickler#
Bases:
pickle.UnpicklerUnpickler that only allows safe built-in types to prevent arbitrary code execution.
Initialization
Initialize self. See help(type(self)) for accurate signature.
- _SAFE_MODULES#
‘MappingProxyType(…)’
- find_class(module: str, name: str) type#
- class bridge.utils.safe_pickle._NumpyRestrictedUnpickler#
Bases:
pickle.UnpicklerUnpickler that allows safe builtins and the narrow set of numpy types needed for object array reconstruction.
NumPy object arrays (dtype=’O’) are serialized via pickle inside
.npyfiles. The pickle stream referencesnumpy.core.multiarray._reconstruct,numpy.ndarray, andnumpy.dtypeto rebuild the array container, while the elements (dicts, lists, ints, …) use only standard builtins.This unpickler permits exactly those types and nothing else — in particular,
os,subprocess,builtins.eval, etc. are blocked, preventing arbitrary-code-execution attacks via crafted.npyfiles.Initialization
Initialize self. See help(type(self)) for accurate signature.
- _SAFE_MODULES#
‘MappingProxyType(…)’
- find_class(module: str, name: str) type#
- bridge.utils.safe_pickle.safe_pickle_load(fp) object#
Deserialize from a file using a restricted unpickler that only allows safe types.
- bridge.utils.safe_pickle.safe_pickle_loads(data: bytes) object#
Deserialize pickle data using a restricted unpickler that only allows safe types.
- bridge.utils.safe_pickle.safe_load_npy(data: bytes)#
Load a
.npyfile from raw bytes without enabling unrestricted pickle.For numeric arrays the fast
allow_pickle=Falsepath is used. For object arrays (packed datasets storing dicts of variable-length lists) the pickle payload is deserialized through :class:_NumpyRestrictedUnpickler, which blocks dangerous modules likeosandsubprocess.- Parameters:
data – Raw bytes of a
.npyfile.- Returns:
numpy.ndarray loaded from the file.