为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Timber WordPress 插件中添加 TWIG 的沙箱扩展?

如何在 Timber WordPress 插件中添加 TWIG 的沙箱扩展?

PHP
慕莱坞森 2023-06-24 15:34:45
我想添加 Sandbox 扩展来使用 Timber for WordPress 评估不受信任的代码(包括使用 Composer,但使用该插件时得到相同的结果)。以下(简化的)代码会导致致命错误。add_filter('timber/twig', function($twig){    $filters = array_diff(array_keys($twig->getFilters()), ['function']);    $policy = new \Twig\Sandbox\SecurityPolicy([], $filters, [], [], []);    $twig->addExtension(new \Twig\Extension\SandboxExtension($policy, true));        return $twig;});错误是:“致命错误:未捕获异常:无法注册扩展“沙箱”,因为扩展已初始化。”如果应用的过滤器是 wood/twig 或 twig_apply_filters,则没有区别。这是添加此扩展的不正确位置吗?它似乎只在调用 Timber::compile_string 时执行。我在 PHP 7.3.x 上使用最新版本的 WordPress 和 Timber
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

$twig->getFilters()导致扩展被初始化,因此不能在这里用于此目的。删除此代码后,不会出现错误,并且沙箱扩展已注册。



查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信