javascript - 从页面中删除所有 JavaScript

标签 javascript c# html .net xss

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

最佳答案

我强烈建议不要走正则表达式路线(您无法使用正则表达式解析 HTML),并考虑类似 HTMLAgilityPack 的东西。

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

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

<b>Hello</b>

成为

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

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

关于javascript - 从页面中删除所有 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118034/

相关文章:

javascript - Leaflet.js geoJson 标签

javascript - Facebook Connect JS API/Internet Explorer 问题

javascript - strokestyle 和 strokewidth 属性不起作用

javascript - 具有双重操作的页面重定向

javascript - NG-重复过滤后完成重火

c# - 返回数字的最接近的倍数

php - Kriesi 分页不起作用

html - 编辑 Bootstrap 类

c# - 从 Owin Api 创建后如何获取 Oauth2 AccessToken?

c# - 如何将嵌套三元组提取到独立语句中