[英]Regex to detect Javascript In a string
我正在尝试在我的querystrings值中检测JavaScript。
我有以下C#代码
private bool checkForXSS(string value)
{
Regex regex = new Regex(@"/((\%3C)|<)[^\n]+((\%3E)|>)/I");
if (regex.Match(value).Success) return true;
return false;
}
这可用于检测<script></script>
标记,但不幸的是,如果没有标记,则无法匹配。
正则表达式是否可以与JavaScript关键字和分号等匹配?
这并不意味着涵盖所有XSS攻击基础。 这是一种检测简单JS攻击的方法,该攻击可能位于字符串值中。
谢谢
第1条规则:使用白名单,而不是黑名单。
您正在阻止一种做XSS的方法,而不是任何一种。 为此,您必须对照您应该接受的用户输入来验证输入,即
/^\\d{1, n}$/
验证输入 /^[\\s\\w\\.\\,]+$/
等进行验证。 有关更多信息,请开始阅读Wikipedia条目 , OWASP上的条目 , webappsec文章以及一些由陌生人撰写的随机博客条目
这是防止跨站点脚本攻击的相当la脚的方法。 您需要使用一种完全不同的方法:确保用户提供的输入是:
经过验证,使其与正在收集的数据的语义相匹配;
每次用于构造要由某种语言解释器(SQL,HTML,Javascript-甚至是纯文本日志文件)解释的表达式时,均应适当引用。 适当的报价完全取决于输出上下文,没有唯一的方法可以做到。
有许多嵌入javascript的方法。 例如
%3Cp+style="expression(alert('hi'))"
将通过您的过滤器。
您可能找不到一个神奇的正则表达式来查找所有JS,并且不会拒绝很多有效的查询字符串。
这种检查可能很有用,但仅应作为纵深防御的一部分。
检查标记<script
是否存在就足够了。
private bool checkForXSS(string value)
{
return value.IndexOf("<script") != -1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.