从页面中删除所有 javascript

Remove all javascript from page

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

我强烈建议不要走正则表达式路线(你不能用正则表达式解析 HTML),并考虑像 HTMLAgilityPack.

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

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

<b>Hello</b>

变成

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

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