zoukankan      html  css  js  c++  java
  • ASP.NET 4.0请求验证

    在客户端文本框中输入HTML标签等危险内容点提交,会出现脚本错误:

    消息: Sys.WebForms.PageRequestManagerParserErrorException: 未能分析从服务器收到的消息。

    修改方法如下:

    <system.web>
        <httpRuntime requestValidationMode="2.0" />
        <pages validateRequest="false"></pages>
    </system.web>

    深入:

    validateRequest=“false”是关闭验证

    但在 4.0 中还多了一个 requestValidationMode,这是什么意思呢?

    requestValidationMode 有两个值:

    • 2.0 仅对网页启用请求验证。是启用还是关闭取决于 validateRequest。
    • 4.0 默认值。任何 HTTP 请求都会启用请求验证,也就是说不光是网页,还包括 Cookie 等。此时强制启用,不管 validateRequest 为何值。

    由于 requestValidationMode="4.0" 是强制启用,所以我们会发现在 .NET Framework 4.0 中仅靠设置 validateRequest 是关闭不了请求验证的,还得将 requestValidationMode 设置为 2.0。

    ASP.NET中的请求验证特性提供了某一等级的保护措施防止XSS攻击,之前版本的ASP.NET的请求验证是默认启动的,但是他仅仅应用于ASP.NET页面中(.aspx文件和.aspx.cs文件)。

    而在ASP.NET4中,请求验证默认对所有类型的请求启动,因为它在BeginRequest被调用之前启动,结果就是对所有资源的请求都要经过请求验证,而不仅仅在.aspx文件和他们的类文件中,甚至包括web service和自定义的httphandler。同样,在自定义httpmodules读取http请求的时候,同样要经过请求验证。

    更多:

    如果开启验证,仍然可以在服务器端捕获HttpRequestValidationException异常并加以处理(未验证)

        protected void Page_Error(object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError();
            if (ex is HttpRequestValidationException)
            {
                //处理异常
                Server.ClearError();
            }
        }
  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/sohobloo/p/2711219.html
Copyright © 2011-2022 走看看