XSS黑名单-有人知道一个合理的名单吗?

时间:2020-03-06 14:35:27  来源:igfitidea点击:

作为减轻临时风险的临时快速解决方案,同时在非常大的代码库中针对XSS漏洞进行永久修复,我正在寻找一个预先存在的XSS预防黑名单,该黑名单可以合理地防御XSS。

最好是一组正则表达式。我知道用于测试和烟雾测试等的备忘单很多,我正在寻找的是用于阻止攻击的预调整正则表达式。

我完全知道,最好的方法是转义输出,或者如果我们需要用户加一些标记以使用白名单。但是,随着代码库的大小,我们需要快速采取一些措施来减少漏洞的直接占用空间,并在开发真正的解决方案的同时提高标准。

有人知道一个好的组合吗?

解决方案

这是一个:http://ha.ckers.org/xss.html,但我不知道它是否完整。

CAL9000是另一个列表,我们可以在其中找到类似的内容。

我意识到这可能不是我们所提问题的直接答案,但是处于类似情况的ASP.NET开发人员可能会发现这很有用:

Microsoft反跨站点脚本库V1.5

This library differs from most encoding libraries in that it uses the "principle of inclusions" technique to provide protection against XSS attacks. This approach works by first defining a valid or allowable set of characters, and encodes anything outside this set (invalid characters or potential attacks). The principle of inclusions approach provides a high degree of protection against XSS attacks and is suitable for Web applications with high security requirements.

如果运行Apache,则可以使用mod_security掩盖一些漏洞。至少它将为我们提供一个工具(控制台或者纯日志文件)来监视流量并在为时已晚之前做出响应。另外,gotroot.com对于Web应用程序有一些有趣的规则。

再说一次,我真的不知道我们要关闭什么样的漏洞。

ha.ckers.org/xss.html上的备忘单不完整。我的一位同事发现了一个或者两个不在那里的人。 RSnake确实列出了每个攻击字符串经过的许多正则表达式过滤器。使用几个,我们可能会关闭足够的孔。

这将是一个很好的起点。如果没有别的,就知道我们需要寻找什么样的东西。

使用它作为开始的地方,并确保编写的脚本可以转义足够的字符,以使黑名单中的任何攻击都无法呈现出良性。如果没有浏览器呈现,xss注入有什么好处?

实际上,在这里大多数情况下都逃脱了足够的正确字符。很难将XSS注入到脚本中,该脚本将每个<变成一个<<并转义为""`。

不知道我们是否正在使用PHP,但如果是这样,则应查看HTMLPurifer。使用非常简单;只需在我们接受输入或者输出的地方添加对purify()方法的调用即可。它基于白名单的方法可以阻止我测试过的每一个XSS攻击。

我们需要的是IDS(入侵检测系统)。如果我们使用的是PHP,则有PHPIDS。它由一个优秀的黑客社区进行维护和测试。他们一直在扔各种东西来改进过滤器,远远超出了Rsnake的原始列表。某个地方还有一个.NET端口,不确定它是否仍在维护。