【问题标题】:Autoescape setting for Phalcon's Volt-engine?Phalcon 的 Volt 引擎的 Autoescape 设置?
【发布时间】:2014-11-14 14:04:48
【问题描述】:

Phalcon 文档提到如何使用过滤器 |e 或通过 autoescape-mode {% autoescape true %} 进行自动转义。但是 Twig 默认启用了自动转义,并允许您将其作为选项传递给 Twig Environment 对象。因此,在 Twig 中,您可以为您的应用全局控制自动转义。

Phalcon 是否提供相同的可能性?我真的在 Google 上找不到这个答案,而且我的 C 知识也不存在。

【问题讨论】:

  • 嗯,autoescape in Twig 的工作方式非常类似于 Volt... 在整个模板中启用转义对我来说没有多大意义,因为它会从输出中删除所有 html 标记。您能否详细说明您想要实现的目标?
  • 我的思路是所有东西都应该被转义,除非我特别想防止转义。这似乎与伏特的作用相反;除非您特别逃避它,否则一切都不会转义。我猜的主要原因是出于安全原因,例如显示用户输入不应在视图中注入 javascript。
  • 请查看更新后的答案...

标签: php phalcon volt


【解决方案1】:

是的,这可能是个问题,因为 Volt's implementation 转义中的 AFAIK 是用来处理块或表达式的,因此可能很难确定你应该转义什么。

恕我直言,实现这一点的更简单方法是自定义编译器以仅在值来自外部源(如变量或方法返回)时转义表达式。所以……答案基本上是,Volt 做不到。但实际上这对于框架来说是一个很好的NRF


编辑

更多地思考这个问题,我意识到我在我的应用程序中做了类似的事情。 CRUD 操作中的数据交换主要是“表单”、控制器和持久性之间的循环,除了 Phalcon 提供的所有帮助器(从 ORM 到 Form 抽象),我们需要应用一些约定来自动化更多的 CRUD 操作,这些操作基本上是大多数时候都一样。

所以我有两个组件可以帮助我从表单中获取模型数据,另一个组件可以帮助我从数据库中获取模型数据。在这两个组件中,每个操作都会自动调用值转换、过滤器和验证。

我这么说是因为字符串的默认过滤器是字符串转义。我的意思是,如果担心对控制器的任何数据输入(即来自表单或数据库)的数据清理,您可能会得到更好的结果。作为奖励,您可以在模型中获得更一致和更强的类型值,从而使您的业务逻辑实现更加简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 2014-05-14
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2012-12-13
    相关资源
    最近更新 更多