我对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吗?
他们有不同的东西吗?但他们都验证了关键词。
感谢您解释。
答案 0 :(得分:0)
是的,他们是不同的。
如果任何提交的表单字段值包含“危险”值(例如您在那里的脚本标记), ValidateRequest
会导致抛出错误并中止请求,以防止脚本注入攻击。
RequiredFieldValidator
等验证程序控件如果失败则不会停止页面处理。它们旨在帮助您处理规则,通常与保护服务器或应用程序免受攻击无关。