我们最近在Internet Explorer 8中的网站上遇到了问题。
我们有一个表单,当在IE8中提交时显示验证异常,声称字符“☃”具有潜在的危险性。
System.Web.HttpRequestValidationException(0x80004005):从客户端检测到一个潜在危险的Request.Form值(_utf8 =“☃”)。
有趣的是,这个角色没有输入,也不是我们VB .NET项目的一部分。
如果我们将页面设置为validateRequest =“false”,那么错误就会消失,但是我们担心这会让自己陷入XSS攻击。我们可以清理自己的输入,但我们宁愿找到问题的根源,而不是创造一个解决方案。
关于Ruby的这个主题似乎很有趣,但我们不确定它如何适用于我们的情况: What is the _snowman param in Ruby on Rails 3 forms for?
另外值得考虑的是,该表单适用于我们测试过的所有其他浏览器(IE11,Chrome,Fire Fox,Opera)。
答案 0 :(得分:1)
您可以在请求验证程序中覆盖此特定情况(请原谅我的C#,希望您能够翻译它):
public class EnhancedRequestValidator : RequestValidator {
protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) {
if (!string.IsNullOrEmpty(value)) {
value = value.Replace("_utf8=\"☃\"", string.Empty);
}
return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
}
}
在你的web.config
中<system.web>
<httpRuntime
requestValidationType="Contosco.Web.EnhancedRequestValidator, Contosco.Web" />
</system.web>