validateRequest = true和requestValidationMode =" 4.0"让html通过

时间:2014-10-17 18:17:16

标签: webforms web-config .net-4.5 validate-request

我在IIS7和.NET 4.5.1上有一个Web Forms网站,我希望使用Microsoft的Request验证来验证http请求。 validateRequest和requestValidationMode的web.config默认值分别应该是“true”和“4.0”,这应该是我想要的(我尝试指定它们以防万一)。

<pages validateRequest="true">
<httpRuntime requestValidationMode="4.0" />

出于某种原因,当我在表单中输入html标记(尝试&lt; script&gt;和&lt; a&gt;)然后提交它时,我得到了预期的潜在危险请求错误,但标签会保存在数据库中。它为什么要通过?我只是按原样获取文本框的Text值并将其发送到我的数据库,但我希望错误可以阻止它发生。

当我尝试设置时:

<httpRuntime requestValidationMode="2.0" />

错误是一样的,但这一次,标签没有在数据库中结束,这就是我想要的。

我想理解为什么较小的安全验证模式“2.0”是唯一一个在我的情况下实际阻止请求通过的模式,这似乎没有多大意义。必须有我遗漏的东西,如果我应该提供其他信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

我找到了解决自己问题的方法。似乎Microsoft's documentation about requestValidationMode表明所有值都高于&#34; 4.0&#34;被解释为&#34; 4.0&#34;,但这不是真的。阅读this interesting page,我发现那里有一个&#34; 4.5&#34;价值是有效的,完全符合我的要求。