我试图在我的查询字符串值中检测JavaScript.
我有以下c#代码
private bool checkForXSS(string value) { Regex regex = new Regex(@"/((\%3C)|<)[^\n]+((\%3E)|>)/I"); if (regex.Match(value).Success) return true; return false; }
这适用于检测标签,但遗憾的是,如果没有标签,则未达到匹配.
正则表达式是否可以匹配JavaScript关键字和分号等?
这并不意味着涵盖所有XSS攻击基础.只是一种检测可以在字符串值中的简单JS攻击的方法.
谢谢
Nº1规则:使用白名单,而不是黑名单.
您正在阻止一种方法来执行XSS,而不是任何方式.要实现这一点,您必须根据用户输入接受的内容验证输入,即
如果您期望一个数字,请验证输入 /^\d{1, n}$/
如果你期望一个字符串,验证它/^[\s\w\.\,]+$/
等等...
有关详细信息,请阅读维基百科条目,OWASP条目,webappsec文章以及由未知人员撰写的一些随机博客条目