我正在XSS
为我的应用程序调查可能的攻击媒介。
我有的:
- 具有单个
textarea
字段的 FormType。通常这个字段可以包含html
标签。 Twig
呈现插入的数据的模板。
我使用该表单插入以下内容:
<b>Some valid HTML text</b>
<script type="text/javascript">alert("XSS")</script>
查看该数据需要转义。在转义数据方面,我熟悉的策略很少。
1)raw
过滤器:完全禁用转义 -> 引入可能的 XSS
2)e
过滤器:
html
风味输出:<b>Some valid HTML text</b> <script type="text/javascript">alert("XSS")</script>
js
风味输出:\x3Cb\x3ESome\x20valid\x20HTML\x20text\x3C\x2Fb\x3E\x0D\x0A\x3Cscript\x20type\x3D\x22text\x2Fjavascript\x22\x3Ealert\x28\x22XSS\x22\x29\x3C\x2Fscript\x3E
3) {{ var|striptags('<br>')|raw }}
,输出:一些有效的 HTML 文本警报(“XSS”)
这个工作,但不知何故我不喜欢它。我宁愿寻找黑名单解决方案,而不是白名单。
现在的问题:
是否有任何其他转义策略允许html
标签但<script>
像e("js")
过滤器一样转义标签?
Twig
我应该在表单提交期间还是在渲染期间“杀死”脚本?