从页面中删除所有 javascript
Remove all javascript from page
我有一个带有控件的网页,它呈现用户的 HTML 标记。
我想删除所有 JS 调用(我猜 CSS)以防止用户注入恶意代码。用其他处理程序替换所有 script
标签和所有 onclick
似乎不是一个好主意,所以 questin 是 .Net 世界中这个 XSS 问题的最佳解决方案。
我强烈建议不要走正则表达式路线(你不能用正则表达式解析 HTML),并考虑像 HTMLAgilityPack.
这将允许您删除所有脚本元素,并从元素中删除所有事件处理程序,无论它们是如何设置的。
另一种方法是转义所有 HTML 输入,然后手动解析您感兴趣的特定标签。
<b>Hello</b>
变成
<b>Hello</>
然后您可以匹配 <(b|i|u|p|em|othertagsgohere)>(.+?)</>
,这样它只会匹配您感兴趣的类型的没有属性的标签。但最终我认为 HTMLAgiltiyPack 路线更好。
我有一个带有控件的网页,它呈现用户的 HTML 标记。
我想删除所有 JS 调用(我猜 CSS)以防止用户注入恶意代码。用其他处理程序替换所有 script
标签和所有 onclick
似乎不是一个好主意,所以 questin 是 .Net 世界中这个 XSS 问题的最佳解决方案。
我强烈建议不要走正则表达式路线(你不能用正则表达式解析 HTML),并考虑像 HTMLAgilityPack.
这将允许您删除所有脚本元素,并从元素中删除所有事件处理程序,无论它们是如何设置的。
另一种方法是转义所有 HTML 输入,然后手动解析您感兴趣的特定标签。
<b>Hello</b>
变成
<b>Hello</>
然后您可以匹配 <(b|i|u|p|em|othertagsgohere)>(.+?)</>
,这样它只会匹配您感兴趣的类型的没有属性的标签。但最终我认为 HTMLAgiltiyPack 路线更好。