DOMPurify XSS 清理程序开源项目

我要开发同款
匿名用户2021年11月02日
37阅读
开发技术JavaScriptHTML/CSS
所属分类安全相关、管理和监控
授权协议Apache

作品详情

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&Tab;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是否能够完成它的工作。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论