在存储HTML时避免XSS攻击

Avoiding XSS attacks when storing HTML

本文关键字:XSS 攻击 存储 HTML      更新时间:2023-09-26

我的网站存储用户生成的HTML。然后这些数据当然会呈现在网页上。格式化HTML和避免XSS攻击的最佳做法是什么?剥离<script><iframe>标签是否足够?这会覆盖所有浏览器吗?我听说过旧的浏览器通过奇怪的编码渲染HTML。。。我该怎么处理?

我想要一个一般性的答案,与任何语言或技术无关。

您可以使用像Jsoup这样的库,尤其是它们的白名单消毒剂来防止XSS。

一般来说,我认为使用白名单比过滤黑名单标签更好/更安全。此外,首先应该避免使用HTML。相反,应该使用一些简单的标记,如markdown。

我可以向您保证,没有办法安全地执行您的要求。狡猾的黑客总是能够利用一个允许用户任意html的系统,即使是通过剥离某些标签进行清理。这正是像markdown和BBcode这样的工具存在的原因。为什么看,甚至StackOverflow也在使用类似的。

你正在考虑的路上到处都是被利用的10000个网站。

您不知道何时允许用户在您的页面上设置HTML,有多种可能性,如onmouseover"myEvilJS"或

您必须转换此符号的最小值。
&amp-&gt&amp;
&lt-&gt&lt;
&gt-&gt&gt;
"->
'->amp#x27;
/->amp#x2F;