如何逃离输出模板
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何逃离输出模板
从一个模板生成HTML时,总有一个风险,一个模板变量可能意想不到输出HTML或危险的客户端代码。结果是,动态内容可以打破结果页面的HTML或允许恶意用户执行跨站脚本(XSS)攻击。考虑一下这个典型的例子:
1
你好{{名称}}
想象他们的名字的用户输入下面的代码:
1
<脚本>alert (“你好!”)< /脚本>
没有任何输出逃跑,结果模板将导致一个JavaScript警告框弹出:
1
你好<脚本>alert (“你好!”)< /脚本>
虽然这似乎是无害的,如果用户可以得到这么远,相同的用户还应该能够编写JavaScript执行恶意操作的安全区域内的一个不知名的,合法的用户。
这个问题的答案是转义输出。输出逃离,相同的模板显示无害,打印脚本
标记在屏幕上:
1
你好& lt;脚本比;alert (& # 39;你好!& # 39;)& lt;/脚本比;
嫩枝和PHP模板系统以不同的方式处理这个问题。如果你用树枝、输出逃离在默认情况下,你的保护。在PHP中,输出逃避并不是自动进行的,这意味着您将需要手动在必要时逃脱。
输出逃离在树枝
如果你使用树枝模板,然后在默认情况下输出逃离。这意味着你保护意外后果的开箱即用的用户提交的代码。默认情况下,输出逃离假设内容被转义的HTML输出。
在某些情况下,您需要禁用输出逃避当你呈现一个变量是可信的和包含标记,不应该逃跑了。假设管理用户可以写文章包含HTML代码。默认情况下,树枝将逃避身体条
呈现它通常添加生
过滤器:
1
{{article.body |生}}
您还可以禁用逃离在输出{%块%}
区域或整个模板。有关更多信息,请参见输出逃离树枝的文档。欧宝官网下载app
用PHP输出逃离
当使用PHP模板输出逃避并不是自动进行的。这意味着,除非你显式地选择逃避一个变量,你不保护。使用输出逃脱,使用特殊的escape ()
查看方法:
1
你好< ? php回声美元视图- >逃避(美元的名字)? >
默认情况下,escape ()
方法假设变量被呈现在一个HTML上下文(因此变量是逃到安全的HTML)。第二个参数可以改变环境。例如,输出在一个JavaScript字符串,使用js
背景:
1
var myMsg = '你好< ? php回声美元视图- >逃避(美元的名字,js的)? >”;