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