我有一个网站,允许通过TinyMCE丰富的编辑器控件输入HTML .它的目的是允许用户使用HTML格式化文本.
然后将该用户输入的内容输出给系统的其他用户.
但是,这意味着有人可以在HTML中插入JavaScript,以便对系统的其他用户执行XSS攻击.
从HTML字符串中过滤掉JavaScript代码的最佳方法是什么?
如果我对标签执行正则表达式检查,这是一个好的开始,但是一个邪恶的实施者仍然可以将JavaScript附加到
onclick
标签的属性.
是否有一种简单的方法来编写所有JavaScript代码的脚本,同时保持HTML的其余部分不受影响?
对于我的特定实现,我正在使用C#
微软已经制作了自己的反XSS库,Microsoft Anti-Cross Site Scripting Library V4.0:
Microsoft Anti-Cross Site Scripting Library V4.0(AntiXSS V4.0)是一个编码库,旨在帮助开发人员保护其基于Web的ASP.NET Web应用程序免受XSS攻击.它与大多数编码库的不同之处在于,它使用白名单技术 - 有时称为包含原则 - 来提供针对XSS攻击的保护.此方法首先定义有效或允许的字符集,并对此集合之外的任何内容进行编码(无效字符或潜在攻击).与其他编码方案相比,白名单方法具有几个优点.此版本的Microsoft Anti-Cross Site Scripting Library中的新功能包括: - 可自定义的HTML和XML编码安全列表 - 性能改进 - 支持中型信任ASP.NET应用程序 - HTML命名实体支持 - 无效的Unicode检测 - 改进的代理HTML和XML编码的字符支持 - LDAP编码改进 - application/x-www-form-urlencoded编码支持
它使用白名单方法去除潜在的XSS内容.
以下是与AntiXSS相关的一些相关链接:
反跨站点脚本库
Microsoft反跨站点脚本库V4.2(AntiXSS V4.2)
Microsoft Web Protection Library