3939from hashlib import sha1
4040from html import unescape
4141from io import BytesIO
42- from jinja2 import Environment
42+ from jinja2 . sandbox import SandboxedEnvironment
4343from jinja2 .meta import find_undeclared_variables
4444from mkdocs .config .base import Config
4545from mkdocs .config .defaults import MkDocsConfig
@@ -151,7 +151,7 @@ def on_config(self, config):
151151 self .card_variables : dict [str , list [list [str ]]] = {}
152152
153153 # Initialize card environment
154- self .card_env = Environment ()
154+ self .card_env = SandboxedEnvironment ()
155155 self .card_env .filters ["x" ] = x_filter
156156
157157 # Always print a warning when debug mode is active
@@ -955,7 +955,7 @@ def _digest(data: object):
955955# -----------------------------------------------------------------------------
956956
957957# Extract all variables recursively
958- def _extract (data : any , env : Environment , config : MkDocsConfig ):
958+ def _extract (data : any , env : SandboxedEnvironment , config : MkDocsConfig ):
959959
960960 # Traverse configuration or dictionary
961961 if isinstance (data , (Config , dict )):
@@ -980,7 +980,9 @@ def _extract(data: any, env: Environment, config: MkDocsConfig):
980980 return []
981981
982982# Replace all variables recursively and return a copy of the given data
983- def _replace (data : any , env : Environment , config : MkDocsConfig , ** kwargs ):
983+ def _replace (
984+ data : any , env : SandboxedEnvironment , config : MkDocsConfig , ** kwargs
985+ ):
984986
985987 # Traverse configuration or dictionary
986988 if isinstance (data , (Config , dict )):
@@ -1006,7 +1008,7 @@ def _replace(data: any, env: Environment, config: MkDocsConfig, **kwargs):
10061008
10071009# Compile template and cache it indefinitely
10081010@functools .lru_cache (maxsize = None )
1009- def _compile (data : str , env : Environment ):
1011+ def _compile (data : str , env : SandboxedEnvironment ):
10101012 return env .from_string (html .unescape (data ))
10111013
10121014# Compute absolute path to internal templates directory,
0 commit comments