class documentation

class SandboxedEnvironment(Environment):

Known subclasses: jinja2.sandbox.ImmutableSandboxedEnvironment

View In Hierarchy

The sandboxed environment. It works like the regular environment but tells the compiler to generate sandboxed code. Additionally subclasses of this environment may override the methods that tell the runtime what attributes or functions are safe to access.

If the template tries to access insecure code a SecurityError is raised. However also other exceptions may occur during the rendering so the caller has to ensure that all exceptions are caught.

Method call​_binop For intercepted binary operator calls (intercepted_binops) this function is executed instead of the builtin operator. This can be used to fine tune the behavior of certain operators.
Method call​_unop For intercepted unary operator calls (intercepted_unops) this function is executed instead of the builtin operator. This can be used to fine tune the behavior of certain operators.
Method is​_safe​_attribute No summary
Method is​_safe​_callable Check if an object is safely callable. By default callables are considered safe unless decorated with unsafe.
Class Variable default​_binop​_table Undocumented
Class Variable default​_unop​_table Undocumented
Class Variable intercepted​_binops Undocumented
Class Variable intercepted​_unops Undocumented
Method __init__ Undocumented
Method call Call an object from sandboxed code.
Method format​_string If a format call is detected, then this is routed through this method so that our safety sandbox can be used for it.
Method getattr Subscribe an object from sandboxed code and prefer the attribute. The attribute passed must be a bytestring.
Method getitem Subscribe an object from sandboxed code.
Method unsafe​_undefined Return an undefined object for unsafe attributes.
Class Variable sandboxed Undocumented
Instance Variable binop​_table Undocumented
Instance Variable unop​_table Undocumented
def call_binop(self, context, operator, left, right):

For intercepted binary operator calls (intercepted_binops) this function is executed instead of the builtin operator. This can be used to fine tune the behavior of certain operators.

New in version 2.6.
Parameters
context:ContextUndocumented
operator:strUndocumented
left:t.AnyUndocumented
right:t.AnyUndocumented
Returns
t.AnyUndocumented
def call_unop(self, context, operator, arg):

For intercepted unary operator calls (intercepted_unops) this function is executed instead of the builtin operator. This can be used to fine tune the behavior of certain operators.

New in version 2.6.
Parameters
context:ContextUndocumented
operator:strUndocumented
arg:t.AnyUndocumented
Returns
t.AnyUndocumented
def is_safe_attribute(self, obj, attr, value):
The sandboxed environment will call this method to check if the attribute of an object is safe to access. Per default all attributes starting with an underscore are considered private as well as the special attributes of internal python objects as returned by the is_internal_attribute function.
Parameters
obj:t.AnyUndocumented
attr:strUndocumented
value:t.AnyUndocumented
Returns
boolUndocumented
def is_safe_callable(self, obj):

Check if an object is safely callable. By default callables are considered safe unless decorated with unsafe.

This also recognizes the Django convention of setting func.alters_data = True.

Parameters
obj:t.AnyUndocumented
Returns
boolUndocumented
default_binop_table: t.Dict[str, t.Callable[[t.Any, t.Any], t.Any]] =

Undocumented

default_unop_table: t.Dict[str, t.Callable[[t.Any], t.Any]] =

Undocumented

intercepted_binops: t.FrozenSet[str] =

Undocumented

intercepted_unops: t.FrozenSet[str] =

Undocumented

def __init__(self, *args, **kwargs):

Undocumented

Parameters
*args:t.AnyUndocumented
**kwargs:t.AnyUndocumented
def call(__self, __context, __obj, *args, **kwargs):
Call an object from sandboxed code.
Parameters
__selfUndocumented
__context:ContextUndocumented
__obj:t.AnyUndocumented
*args:t.AnyUndocumented
**kwargs:t.AnyUndocumented
Returns
t.AnyUndocumented
def format_string(self, s, args, kwargs, format_func=None):
If a format call is detected, then this is routed through this method so that our safety sandbox can be used for it.
Parameters
s:strUndocumented
args:t.Tuple[t.Any, ...]Undocumented
kwargs:t.Dict[str, t.Any]Undocumented
format​_func:t.Optional[t.Callable]Undocumented
Returns
strUndocumented
def getattr(self, obj, attribute):
Subscribe an object from sandboxed code and prefer the attribute. The attribute passed must be a bytestring.
Parameters
obj:t.AnyUndocumented
attribute:strUndocumented
Returns
t.Union[t.Any, Undefined]Undocumented
def getitem(self, obj, argument):
Subscribe an object from sandboxed code.
Parameters
obj:t.AnyUndocumented
argument:t.Union[str, t.Any]Undocumented
Returns
t.Union[t.Any, Undefined]Undocumented
def unsafe_undefined(self, obj, attribute):
Return an undefined object for unsafe attributes.
Parameters
obj:t.AnyUndocumented
attribute:strUndocumented
Returns
UndefinedUndocumented
sandboxed: bool =

Undocumented

binop_table =

Undocumented

unop_table =

Undocumented