在模板中显示 html 标签 - symfony 和 CKEDITOR。安全如何?
我使用 Symfony 1.4 和 Doctrine 1.2。我安装了插件 http://www.symfony-project.org/plugins/sfCkPlugin 如果我从表单添加网络数据,这工作正常,但在模板中,这向我展示了例如:
<p><b>bold</b> <i>test</i></p>
等
而不是
粗体 测试,
我必须在此处添加一些内容:getDesc() ?> ; ,但是什么?
在数据库MySQL中我有:
<p> <strong>bold</strong> <u>test</u></p>
这安全吗?
i use Symfony 1.4 and Doctrine 1.2. I installed plugin http://www.symfony-project.org/plugins/sfCkPlugin
if i add net data from form this working ok, but in template this show me for example:
<p><b>bold</b> <i>test</i></p>
etc
instead of
bold test
I must something add here: getDesc() ?> , but what?
In database MySQL i have:
<p> <strong>bold</strong> <u>test</u></p>
this is safety?
这是由于 symfony 中的输出转义器而发生的。
您可以通过对数据调用 getRawValue() 来修复此问题:
请记住,如果执行此操作,您需要确保输入的 html/javascript/其他内容可以安全地输出到页面上。如果它来自后端,则可能没问题。但如果它来自最终用户,您应该确保其安全(阻止 XSS 攻击、防止破坏布局的 html 等)。这是一个很大的话题!
This is happening because of the output escaper in symfony.
You can fix it by calling getRawValue() on the data:
Bear in mind that if you do this, you need to ensure that the html/javascript/whatever else has been entered is safe to output on the page. If it's coming from a backend, you are probably ok. But if it's coming from end users, you should ensure you make it safe (block XSS attacks, prevent html that breaks the layout, etc). It's a big topic!