在 Symfony 中防止 XSS
Prevent XSS in Symfony
当我在Symfony2中使用wyswyg编辑器显示来自文本区域的数据时,如何防止XSS?
我有一个带有微小MCE编辑器的文本区域。我可以插入粗体、斜体的代码,然后我可以使用 twig 过滤器在浏览器中显示数据:
{{miArticulo.contenido|raw}}
但是当我在文本区域中编写脚本时,例如警报,它也会在浏览器中呈现;
如何仅显示来自 HTML 的安全元?我尝试使用树枝过滤器自动逃逸环绕,但我失败了:
{% autoescape 'html' %}{{miArticulo.contenido|raw}}{% endautoescape %}
我可以显示安全的内容吗,或者我应该尝试使用其他库,例如 HTMLPurifier
除了使用像Twig这样的模板引擎外,我强烈建议实现内容安全策略nonce标头。
header('Content-Security-Policy', 'script-src 'nonce-randomNonceString' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; object-src 'none');
他们禁止运行除明确列入白名单的脚本之外的其他脚本。缺点是您需要向代码中的每个 <script>
标记添加一个随机生成的 nonce 参数。
我写了一个详细的教程,如何在Symfony中使用nonce实现CSP 3,因此nonce参数是每个请求自动生成的。随意使用该解决方案。
在这种情况下,
我正在使用这个捆绑包:
https://github.com/Exercise/HTMLPurifierBundle
当用户发送 HTML 时,您可能会在表单上使用它获得最佳性能。(通过表单数据转换器,如文档中所述)
据我所知,没有其他选择可以阻止它以所有聪明的方式将 js 放入 html。
相关文章:
- 如何防止在使用.val()时引入XSS漏洞
- XSS通过地址栏注入
- 如何照顾CSRF&单页应用程序中不使用cookie的XSS攻击
- Rails:如何在浏览器中显示动态html内容,而不会对其进行转义,也不会引起XSS攻击
- JS应用程序中基于DOM的XSS保护
- XSS脚本攻击攻击->可以't调用javascript
- Symfony 2,在 Javascript 中访问实体对象
- FullCalendar backend PHP/JS to symfony 3
- json_encode是否具有足够的XSS保护
- XSS可以用来修改我网站的一部分,一个不打算修改的部分
- 在 Symfony 中防止 XSS
- 提交表单仍然存在XSS的风险
- Symfony表单提交而不重新加载页面
- [XSS]Expressjs 阻止从 POST 请求运行脚本
- Symfony Twig+Haml标记属性检查和属性脚本
- 避免xss就足够了吗
- Symfony sfValidators:动态设置是否需要值
- symfony 2 trick访问数组javascript索引
- 如何允许HTML标记用于输入而不易受XSS攻击
- Uncaught TypeError:对象原型在Symfony 2中只能是Object或ExtJS为null