Вы можете взглянуть на расширение песочницы ветки.Вы можете установить политику и явно определить каждый отдельный тег, фильтр, метод, свойство и функцию.Это был совет, который я получил после прохождения моего приложения через тест на проникновение в систему безопасности.Вы можете настроить его глобально или внутри вашего контроллера, который отображает пользовательский твиг-ввод.
https://twig.symfony.com/doc/2.x/tags/sandbox.html
https://twig.symfony.com/doc/2.x/api.html#sandbox-extension
/**
* Adds sandbox limitations to twig-environment to prevent template-injections
*
* @return \Twig_Environment
*/
private function getSandboxedTwigEnvironment()
{
$tags = array('if', 'include', 'import', 'block', 'set', 'for');
$filters = array('date', 'escape', 'trans', 'split', 'length', 'slice', 'lower', 'raw');
$methods = array();
$properties = array();
$functions = array('include', 'path', 'absolute_url', 'asset', 'is_granted');
$policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions);
$sandbox = new Twig_Extension_Sandbox($policy);
$twigEnvironment = $this->getCentralService()->getTwigEnvironment();
$twigEnvironment->addExtension($sandbox);
return $twigEnvironment;
}
Исключение составляет Twig_Sandbox_SecurityError будет выдано, если какие-либо запрещенные теги, фильтр и т. Д. Были добавлены к пользовательскому вводу.