gpt4 book ai didi

javascript - 如何在用户生成的 HTML 中防止 Javascript 注入(inject)攻击

转载 作者:IT王子 更新时间:2023-10-29 02:59:09 27 4
gpt4 key购买 nike

我正在保存用户提交的 HTML(在数据库中)。我必须防止 JavaScript 注入(inject)攻击。我见过的最有害的是 style="expression(...)" 中的 JavaScript .

除此之外,相当数量的有效用户内容将包含特殊字符和 XML 结构,因此我想尽可能避免使用白名单方法。 (列出每个允许的 HTML 元素和属性)。

JavaScript 攻击字符串示例:

1.

"Hello, I have a
<script>alert("bad!")</script>
problem with the <dog>
element..."
"Hi, this <b
style="width:expression(alert('bad!'))">dog</b>
is black."

有没有办法阻止这样的 JavaScript,并保持其余的不变?

到目前为止,我唯一的解决方案是使用正则表达式来删除某些模式。它解决了案例 1,但没有解决案例 2。

环境本质上是 Microsoft 堆栈:

  • SQL Server 2005
  • C# 3.5 (ASP.NET)
  • JavaScript 和 jQuery。

我希望阻塞点是 ASP.NET 层 - 任何人都可以制作错误的 HTTP 请求。

编辑

谢谢大家的链接。假设我可以定义我的列表(内容将包括许多数学和编程结构,所以白名单会很烦人),我还有一个问题:

什么样的解析器可以让我只删除“坏”部分?坏的部分可能是整个元素,但是那些驻留在属性中的脚本呢?我无法删除 < a hrefs >愿不愿意。

最佳答案

你认为是吗? Check this out .

无论您采用何种方法,您肯定需要使用白名单。这是让您在网站上允许的内容接近安全的唯一方法。

编辑:

不幸的是,我不熟悉 .NET,但是您可以查看 stackoverflow 自己与 XSS 的战斗 (https://blog.stackoverflow.com/2008/06/safe-html-and-xss/) 以及为解析 HTML 而编写的代码,该代码发布在该网站上:Archive.org link - 显然你可能需要更改它,因为你的白名单更大,但这应该让你开始。

关于javascript - 如何在用户生成的 HTML 中防止 Javascript 注入(inject)攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/942011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com