什么是从将被显示的HTML中删除Javascript的最佳库/方法?
例如,考虑以下内容:
<html><body><span onmousemove='doBadXss()'>test</span></body></html>
并离开:
<html><body><span>test</span></body></html>
我了解了DeXSS项目。但是,这是否是最好的选择呢?
什么是从将被显示的HTML中删除Javascript的最佳库/方法?
例如,考虑以下内容:
<html><body><span onmousemove='doBadXss()'>test</span></body></html>
并离开:
<html><body><span>test</span></body></html>
我了解了DeXSS项目。但是,这是否是最好的选择呢?
JSoup有一种基于白名单的简单方法来清理HTML。请查看http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer
它使用白名单,这比DeXSS采用的黑名单方法更安全。从DeXSS页面上可以看到:
仍然有许多已知的XSS攻击DeXSS尚未检测到。
黑名单只禁止已知的不安全结构,而白名单只允许已知的安全结构。因此,未知的、可能不安全的结构只能通过白名单来对其进行保护。
最简单的方法是一开始就不要有这些... 在自由格式字段中,允许使用非常简单的标记,并禁止任何类型的属性可能是有意义的。
也许这不是你想要的答案,但在许多情况下,你只想提供标记功能,而不是完整的编辑套件。
你可以尝试使用dom4j http://dom4j.sourceforge.net/dom4j-1.6.1/ 这是一个DOM解析器(与SAX相对),它允许你轻松遍历和操作DOM,在写回或流向其他地方之前,删除节点属性,例如onmouseover
(或整个元素,如<script>
)。根据你的HTML有多复杂,你可能需要先清理一下 - jtidy http://jtidy.sourceforge.net/ 是个不错的选择。
但显然,如果你在页面渲染时进行所有这些操作,会增加一些开销。