从页面中删除所有JavaScript

时间:2015-06-29 14:17:02

标签: javascript c# html .net xss

我有一个带控件的网页,用于呈现用户的HTML标记。 我想删除所有JS调用(和CSS,我猜),以防止用户注入恶意软件代码。将所有script标签和所有onclick替换为其他处理程序似乎是一个坏主意,因此questin是关于.Net世界中此XSS问题的最佳解决方案。

1 个答案:

答案 0 :(得分:1)

我强烈建议不要使用正则表达式路由(你不能用Regex解析HTML),并考虑像HTMLAgilityPack这样的东西。

这将允许您删除所有脚本元素,并从元素中删除所有事件处理程序,无论它们是如何设置的。

另一种方法是转义所有HTML输入,然后手动解析您感兴趣的特定标记。

<b>Hello</b>

变为

&lt;b&gt;Hello&lt;/&gt;

然后你可以匹配&lt;(b|i|u|p|em|othertagsgohere)&gt;(.+?)&lt;/$1&gt;,这样它只匹配你感兴趣的类型没有属性的标签。但最终我认为HTMLAgiltiyPack路线更好。