C# 正则表达式来检测字符串中的Javascript
我正在尝试检测QueryString值中的JavaScript 我有下面的c代码C# 正则表达式来检测字符串中的Javascript,c#,javascript,regex,xss,C#,Javascript,Regex,Xss,我正在尝试检测QueryString值中的JavaScript 我有下面的c代码 private bool checkForXSS(字符串值) { 正则表达式正则表达式=新正则表达式(@/(\%3C)|)/I); if(regex.Match(value.Success)返回true; 返回false; } 这可用于检测标记,但不幸的是,如果没有标记,则无法找到匹配项 正则表达式是否可以匹配JavaScript关键字和分号等 这并不意味着涵盖所有XSS攻击基地。这只是一种检测简单JS攻击的方法
private bool checkForXSS(字符串值)
{
正则表达式正则表达式=新正则表达式(@/(\%3C)|)/I);
if(regex.Match(value.Success)返回true;
返回false;
}
这可用于检测
标记,但不幸的是,如果没有标记,则无法找到匹配项
正则表达式是否可以匹配JavaScript关键字和分号等
这并不意味着涵盖所有XSS攻击基地。这只是一种检测简单JS攻击的方法,可以是字符串值。
谢谢这是一种防止跨站点脚本攻击的非常蹩脚的方法。您需要使用完全不同的方法:确保用户提供的输入是:
这是一种防止跨站点脚本攻击的非常蹩脚的方法。您需要使用完全不同的方法:确保用户提供的输入是:
第1条规则:使用白名单,而不是黑名单 您正在阻止执行XSS的一种方法,而不是任何方法。要实现这一点,您必须根据应接受为用户输入的内容验证输入,即
- 如果需要一个数字,请根据
/^\d{1,n}$/
- 如果需要字符串,请根据
等对其进行验证/^[\s\w\.\,]+$/
有关更多信息,请开始阅读、和一些随机的规则:使用白名单,而不是黑名单 您正在阻止执行XSS的一种方法,而不是任何方法。要实现这一点,您必须根据应接受为用户输入的内容验证输入,即
- 如果需要一个数字,请根据
/^\d{1,n}$/
- 如果需要字符串,请根据
等对其进行验证/^[\s\w\.\,]+$/
要了解更多信息,请开始阅读、和一些随机的内容,它应该足以让您检查标记是否
它应该足以让您检查标记是否有许多嵌入javascript的方法。例如
%3Cp+style="expression(alert('hi'))"
将通过你的过滤器
您可能找不到一个神奇的regexp,它可以找到所有的JS,并且不会拒绝很多有效的查询字符串
这种检查可能有用,但它应该只是深度防御的一部分。嵌入javascript的方法很多。例如
%3Cp+style="expression(alert('hi'))"
将通过你的过滤器
您可能找不到一个神奇的regexp,它可以找到所有的JS,并且不会拒绝很多有效的查询字符串
这种检查可能有用,但它应该只是纵深防御的一部分。好,然后必须检测子字符串“onmouseover”的存在,等等。。。阅读我的帖子Ok,然后你必须检测子字符串“onmouseover”的存在,等等。。。我的帖子读错了onclick
,onmouseover
等都可以在没有脚本标记的情况下存在;这是一个糟糕的方法onclick
,onmouseover
等都可以在没有脚本标记的情况下存在;这是一个糟糕的方法。我正在使用一个现有的应用程序,其中查询字符串被放到页面上。我需要检查javascript的值,例如警报、函数、事件等和HTML。我上面的正则表达式检查标签,但不检查JS关键字等。我想在将JS放入页面之前剥离它。对不起,但我真的不明白这意味着什么。我正在挑选一个现有的应用程序,其中QueryString被放入页面。我需要检查javascript的值,例如警报、函数、事件等和HTML。我上面的正则表达式检查标签,但不检查JS关键字等。我想在将JS放入页面之前剥离JS。抱歉,但我真的不明白这意味着什么。悲哀的是,没有人听“未知人”笑话,也没有人听“未知人”笑话
%3Cp+style="expression(alert('hi'))"