繁体   English   中英

从 HTML 输入中剥离脚本标签

[英]Stripping script tags from HTML input

public static string MakeWebSafe(this string x) {
    const string RegexRemove = @"(<\s*script[^>]*>)|(<\s*/\s*script[^>]*>)";
    return Regex.Replace(x, RegexRemove, string.Empty, RegexOptions.IgnoreCase);
}

有什么理由这个实现不够好。 你能打破它吗? 有什么我没有考虑到的吗? 如果您使用或曾经使用过不同的东西,它的优点是什么?

我知道这会将脚本的主体留在文本中,但这对于这个项目来说没关系。

更新

不要执行上述操作:我最后选择了这个: HTML Agility Pack strip tags NOT IN whitelist

你考虑过这种情况吗??

<scri<script>pt type="text/javascript">
    causehavoc();
</scr</script>ipt>

最好的办法是删除所有标签,对事物进行编码,或者使用 bbcode

是的,您的 RegEx 可以通过 unicode 编码脚本标签来规避。 我建议您在安全性方面寻找更强大的库。 看看微软 Web 保护库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM