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