【问题标题】:ASP.NET potentially Dangerous Request Javascript RegexASP.NET 潜在的危险请求 Javascript 正则表达式
【发布时间】:2012-02-03 08:46:58
【问题描述】:

什么是regular expression,Microsoft 的 .NET Framework 用于执行标准验证,当发布 HTML 或其他可能不安全的内容时,会导致 HttpRequestValidationException“从客户端检测到潜在危险的 Request.Form 值”。

我希望将其精确副本转换为 JavaScript,以便尽早通知用户。

我当前的正则表达式 (/()|]+>/) 很接近,但与 .NET 的不一样。

我知道这对于不同的 .NET 版本可能会有所不同,所以我特别想知道:

  • .NET 2 的正则表达式
  • .NET 4 的正则表达式

【问题讨论】:

  • 我非常怀疑正则表达式是唯一隐含的组件 - 如果有的话 - 来检测...

标签: javascript asp.net regex validation


【解决方案1】:

我可能已经在这里的另一个问题中回答了这个问题: https://stackoverflow.com/a/4949339/62054

此正则表达式遵循 .NET 4 中的逻辑。

/^(?!(.|\n)*<[a-z!\/?])(?!(.|\n)*&#)(.|\n)*$/i

查看 CrossSiteScriptingValidation 的 .NET 源代码以找到 Microsoft 遵循的逻辑。 fge 是对的,它不使用正则表达式,而是使用一些循环和字符串比较。我怀疑这是为了性能。

【讨论】:

  • IsDangerousString = function (str) { return (/^(?!(.|\n)*&lt;[a-z!\/?])(?!(.|\n)*&amp;#)(.|\n)*$/i.test(str)); }; IsDangerousString("&lt;"); 如果您在 chrome 中尝试上面的 JS 代码,它将返回 true 但在 .Net 中用于 CrossSiteScriptingValidation 是允许的(不是危险字符串)。
【解决方案2】:

您可以使用一些反编译工具,自己看看根本没有正则表达式。它调用静态方法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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多