【问题标题】:How to enable autoescaping in Twig using Symfony如何使用 Symfony 在 Twig 中启用自动转义
【发布时间】:2014-09-04 13:55:25
【问题描述】:

我在我的 Symfony 项目中使用 Twig。

Symfony 应该启用autoescape by default。但是默认情况下它不会这样做,并且在我手动启用它之后它仍然无法工作。

我已将 Twig 配置为自动转义我的所有变量。

twig:
    autoescape:   true

但这不会过滤任何东西。 HTML 和 JavaScript 都没有转义。 没有自定义 autoescape_service,我没有使用 |raw{ autoescape false } 过滤变量。

我已经仔细检查了生成的配置,以确保该值没有被覆盖。 在 twig 服务定义下的 app/cache/dev/appDevDebugProjectContainer.xml 中,参数如下:

<argument key="debug">true</argument>
<argument key="strict_variables">false</argument>
<argument key="cache">false</argument>
<argument key="autoescape">true</argument>
<argument key="exception_controller">twig.controller.exception:showAction</argument>
<argument key="autoescape_service">null</argument>
<argument key="autoescape_service_method">null</argument>
<argument key="charset">UTF-8</argument>

Twig 是否有另一种方法覆盖我缺少的自动转义选项?或者我该如何强制启用它?

【问题讨论】:

  • 你输出什么?模板变量? Twig 扩展功能?
  • 模板变量,实体被传递给视图,并且经常打印属性。像 {{ message.content }}

标签: php symfony twig


【解决方案1】:

我总是在浪费数小时试图找到解决方案后提出问题后发现问题。

在开发过程中,twig.autoescape 被设置为 false。 后来需要 XSS 保护。并且 {{ autoescape }} 块被添加到某些字段中。一段时间后,在自动转义块中添加了|raw 过滤器,以再次禁用某些字段的自动转义。

我错过了不必要的自动转义块中的|raw 过滤器。 (我一定是跳过了认为 autoescape 设置为 true 的内容,但稍后会应用 |raw 过滤器,因此内容保持原始状态。

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多