正则表达式检测Javascript在字符串中

w4y*_*ymo 1 javascript c# regex xss

我试图在我的查询字符串值中检测JavaScript.

我有以下c#代码

    private bool checkForXSS(string value) 
    {
        Regex regex = new Regex(@"/((\%3C)|<)[^\n]+((\%3E)|>)/I"); 

        if (regex.Match(value).Success) return true; 

        return false; 
    }
Run Code Online (Sandbox Code Playgroud)

这适用于检测<script></script>标签,但遗憾的是,如果没有标签,则未达到匹配.

正则表达式是否可以匹配JavaScript关键字和分号等?

这并不意味着涵盖所有XSS攻击基础.只是一种检测可以在字符串值中的简单JS攻击的方法.

谢谢

Rod*_*igo 9

Nº1规则:使用白名单,而不是黑名单.

您正在阻止一种方法来执行XSS,而不是任何方式.要实现这一点,您必须根据用户输入接受的内容验证输入,即

  • 如果您期望一个数字,请验证输入 /^\d{1, n}$/
  • 如果你期望一个字符串,验证它/^[\s\w\.\,]+$/等等...

有关详细信息,请阅读维基百科条目,OWASP条目,webappsec文章以及由未知人员撰写的一些随机博客条目