DOMPurify是用于HTML、MathML和SVG的纯DOM、超快、超容忍XSS清理程序。
DOMPurify是用JavaScript编写的,适用于所有现代浏览器(Safari(10+)、Opera(15+)、InternetExplorer(10+)、Edge、Firefox和Chrome-以及几乎所有使用Blink或WebKit的其他浏览器)。它不会在MSIE6或其他旧浏览器上出现故障。它要么使用回退机制,要么干脆什么都不做。
DOMPurify对HTML进行净化处理,防止XSS攻击。你可以给DOMPurify提供一个受污染的HTML的字符串,它将返回一个包含干净HTML的字符串(除非另行配置)。DOMPurify将剥离所有包含危险HTML的内容,从而防止XSS攻击和其他有害的东西,且效率很快。开发团队使用浏览器提供的技术,并把它们变成一个XSS过滤器。你的浏览器越快,DOMPurify就越快。
DOMPurify.sanitize('<imgsrc=xonerror=alert(1)//>');//becomes<imgsrc="x">DOMPurify.sanitize('<svg><g/onload=alert(2)//<p>');//becomes<svg><g></g></svg>DOMPurify.sanitize('<p>abc<iframe//src=jAva	script:alert(3)>def</p>');//becomes<p>abc</p>DOMPurify.sanitize('<math><mi//xlink:href="data:x,<script>alert(4)</script>">');//becomes<math><mi></mi></math>DOMPurify.sanitize('<TABLE><tr><td>HELLO</tr></TABL>');//becomes<table><tbody><tr><td>HELLO</td></tr></tbody></table>DOMPurify.sanitize('<UL><li><AHREF=//google.com>click</UL>');//becomes<ul><li><ahref="//google.com">click</a></li></ul>DOMPurify目前支持HTML5、SVG和MathML。DOMPurify默认允许CSS、HTML自定义数据属性。DOMPurify也支持ShadowDOM--并递归地对DOM模板进行清理。DOMPurify还允许你对使用jQuery$()和elm.html()API的HTML进行清理,没有任何已知问题。
DOMPurify为旧的MSIE浏览器提供了一个fall-back行为。它使用仅适用于MSIE的toStaticHTML功能来进行净化。但是请注意,在这种回退模式下,下面的配置标志几乎没有任何作用。你需要自己来处理这个问题。
如果连toStaticHTML都不支持,DOMPurify根本就不会做什么。它只是简单地返回你给它的字符串。
DOMPurify还公开了一个名为isSupported的属性,它开源告诉你DOMPurify是否能够完成它的工作。
评论