ASP.NET请求验证和服务器端验证

时间:2012-08-13 15:56:36

标签: asp.net validation

我对ASP.NET请求验证和服务器端验证感到困惑。 如果我们设置ValidateRequest =“false”,如下所示。

<%@ Language="C#" ValidateRequest="false" %>
<html>
  <script runat="server">
   void btnSubmit_Click(Object sender, EventArgs e)
   {
      // If ValidateRequest is false, then 'hello' is displayed
      // If ValidateRequest is true, then ASP.NET returns an exception
      Response.Write(txtString.Text);
   }
  </script>
<body>
  <form id="form1" runat="server">
    <asp:TextBox id="txtString" runat="server" 
             Text="<script>alert('hello');</script>" />
    <asp:Button id="btnSubmit" runat="server" OnClick="btnSubmit_Click" 
             Text="Submit" />
  </form>
</body>
</html>

那么我们可以使用服务器端验证,例如RequiredFieldValidator Control吗?

他们有不同的东西吗?但他们都验证了关键词。

感谢您解释。

1 个答案:

答案 0 :(得分:0)

是的,他们是不同的。

如果任何提交的表单字段值包含“危险”值(例如您在那里的脚本标记),

ValidateRequest会导致抛出错误并中止请求,以防止脚本注入攻击。

RequiredFieldValidator等验证程序控件如果失败则不会停止页面处理。它们旨在帮助您处理规则,通常与保护服务器或应用程序免受攻击无关。