ASP.NET潜在危险请求Javascript Regex
ASP.NET potentially Dangerous Request Javascript Regex
当发布HTML或其他可能不安全的内容时,Microsoft的.NET Framework用于执行标准验证的正则表达式是什么,导致HttpRequestValidationException"从客户端检测到潜在危险的Request.Form值"。
我希望将它的精确副本转换为JavaScript,以便尽早提醒用户。
我当前的正则表达式(/(&#)|<[^<>]+>/)接近,但与.NET的不同
我知道不同的.NET版本可能会有所不同,所以我特别想知道:
- .NET 2的正则表达式
- .NET 4的正则表达式
您可以使用一些反编译工具,亲眼看到根本没有正则表达式。它调用静态方法CrossSiteScriptingValidation.IsDangerousString
。
但也许您可以使用Microsoft AntiXSS库来实现同样的功能。无论如何,这里是方法:
internal static bool IsDangerousString(string s, out int matchIndex)
{
matchIndex = 0;
int num1 = 0;
int num2 = s.IndexOfAny(CrossSiteScriptingValidation.startingChars, num1);
if (num2 < 0)
{
return false;
}
if (num2 == s.Length - 1)
{
return false;
}
matchIndex = num2;
char chars = s.get_Chars(num2);
if ((chars == 38 || chars == 60) && (CrossSiteScriptingValidation.IsAtoZ(s.get_Chars(num2 + 1)) || s.get_Chars(num2 + 1) == 33 || s.get_Chars(num2 + 1) == 47 || s.get_Chars(num2 + 1) == 63))
{
return true;
}
else
{
if (s.get_Chars(num2 + 1) == 35)
{
return true;
}
}
num1 = num2 + 1;
}
我可能在这里的另一个问题中回答了这个问题:https://stackoverflow.com/a/4949339/62054
此正则表达式遵循.NET4中的逻辑。
/^(?!(.|'n)*<[a-z!'/?])(?!(.|'n)*&#)(.|'n)*$/i
在.NET源代码中查找CrossSiteScriptingValidation,以查找Microsoft遵循的逻辑。fge是对的,它不使用regex,而是使用一些循环和字符串比较。我怀疑这是为了表演。
相关文章:
- Facebook邀请好友请求javascript
- '$'未定义Jquery ajax请求-javascript导入
- 为什么Chrome似乎异步请求Javascript文件
- 基本的 AJAX 请求 Javascript/PHP 不起作用
- 请求Javascript/Angular遇到异步问题
- 为什么在浏览器请求javascript文件时请求Accept:*/*
- 是否可以在ajax请求(JavaScript)中使用File类(Java)
- 代码隐藏中的Cant请求javascript变量总是返回“”&”;
- ASP.NET潜在危险请求Javascript Regex
- 替代请求.javascript/jquery中的RawUrl
- 排队的函数调用请求javascript
- jQuery's请求Javascript函数
- 从CDN和本地请求javascript时不同的头
- 如何尽可能隐藏AJAX请求(JavaScript代码)
- 递归HTTP请求javascript
- 上传pdf/doc等和发送数据到服务器的请求- Javascript
- 当从本地服务器请求javascript时,Rails得到CORS错误
- 是ASP的使用.网络请求.JavaScript中的QueryString是安全的
- 按特定顺序加载(请求)javascript
- 使用facebook批量请求javascript api