从HTML输入中剥离脚本标记

时间:2011-06-13 15:03:47

标签: c# html regex

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

2 个答案:

答案 0 :(得分:4)

您是否考虑过这种情况?

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

最好的办法是删除所有标签,编码或使用bbcode

答案 1 :(得分:2)

是的,您可以通过编码脚本标记的unicode来规避您的RegEx。我建议你在安全方面寻找更强大的库。看看Microsoft Web Protection Library