如果我们从输入中删除所有脚本和java单词,我们可以说我们对XSS攻击是安全的

时间:2013-04-23 12:33:56

标签: c# asp.net xss sanitization

我正在使用asp.net htmleditorextender,遗憾的是现在没有可用的XSS消毒剂。因此,对于快速解决方案,我将替换用户输入中的所有脚本和java单词,如下所示

    var regex = new Regex("script", RegexOptions.IgnoreCase);
    srSendText = regex.Replace(srSendText, "");

    regex = new Regex("java", RegexOptions.IgnoreCase);
    srSendText = regex.Replace(srSendText, "");

我可以假设我不受XSS攻击吗?

其实我正在使用htmlagilitypack anti xss sanitizer,但它甚至没有删除脚本标签,所以完全无用

2 个答案:

答案 0 :(得分:3)

不,你不能。

攻击者可以轻松绕过此类检查,例如将script编码为script

通过确保来自用户的任何内容在没有正确编码的情况下永远不会放入页面中来确保代码免受XSS攻击的影响,以确保文本中的任何代码都不会被执行。< / p>

答案 1 :(得分:1)

在我看来,自定义XSS预防通常是否定的,因为您应该始终使用库。但是,剥离scriptjava是不够的,传递给服务器的任何内容都应使用HttpUtility.HtmlEncode来编码来自用户的任何输入。

还要确保在配置文件中设置了validateRequest="true"

其他危险标签可能包括:

  • 小应用程序
  • 嵌入
  • 脚本
  • 框架
  • HTML
  • IFRAME
  • IMG
  • style
  • 链接
  • 的iLayer
  • 物体

http://msdn.microsoft.com/en-us/library/ff649310.aspx