用户在尝试登录时收到“检测到有潜在危险的request.form值”错误消息。我在logon.aspx页面中设置了validateRequest =“false”以及以下“位置”中的web.config中:
<location path="~/Account/Logon.aspx">
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
用户仍然收到错误消息。我问他在密码中有什么特殊字符,他有“&amp;”,“#”和“(”,没有一个应该产生这个错误(我有#和*)。还有什么我可以试试的?
几乎所有解决此问题的建议,包括本网站的建议,都建议使用“validaterequest = false”,这似乎没什么帮助。
答案 0 :(得分:1)
解决方案的两个部分。首先添加到控制器方法ValidateInputAttribute:
[ValidateInput(false)]
第二部分更难。您应该在代码中手动验证值。确保用户输入中没有SQL注入。
<强>更新强> 对于ASP.NET Web窗体,请在页面中使用ValidateRequest标记,如下例所示:
<%@ Page language="c#" Codebehind="LoginForm.aspx.cs"
ValidateRequest="false" AutoEventWireup="false"
Inherits="Junk.WebForm1" %>