使用验证请求并在aspx的页面标记中启用事件验证

时间:2011-09-30 10:21:27

标签: c# asp.net

  

可能重复:
  enableEventValidation and validateRequest difference

有人可以正确解释

的需要
 validateRequest="false" 
  enableEventValidation="false" 
页面标记中的

3 个答案:

答案 0 :(得分:2)

对于enableEventValidation =“false”

阅读documentation

编辑:出于安全原因,最好尽可能将其设置为true。

因此,我建议您仅在导致问题的各个AJAX页面上将其设置为false,而在web.config中保留为true。

对于validateRequest =“false”

“好处”是您可以更好地控制输入验证。如果ValidateRequest = true且输入的字符无效,则会向用户显示一个丑陋的错误页面。

虽然有点旧,here你有关于“防止ASP.NET中跨站点脚本”的MSDN帖子

答案 1 :(得分:0)

我假设您要求我设置validateRequest="false"和/或enableEventValidation="false"的有效方案。

当您使用java-script操作服务器控件生成的html时,通常需要

enableEventValidation="false"。例如,如果服务器端下拉控件必须有三个值“A”,“B”,“C”,那么这些只是回发后预期的值。但是如果你正在进行客户端操作并因此引入额外的值“D”并选择它,那么ASp.NET将引发事件验证错误。所以我们必须压制它。特别是,更改下拉值(没有回发)可能非常普遍 - 根据州选择等填充城市

当您想要允许用户输入被认为是危险的字符序列时,需要

validateRequest="false" - 例如<script>bla bla...</script>会引发请求验证错误,但如果您正在开发允许发布代码的开发人员论坛/ QA站点(例如SO),则必须禁用请求验证。

答案 2 :(得分:0)

ValidateRequest设置会检查用户输入的潜在有害信息。例如,如果ValidateRequest设置为true并且您在TextBox中输入了一些标记,则请求验证将失败并且页面将出错。

EnableEventValidation设置确定回发和回调事件是否应验证控件事件源自控件呈现的用户界面。当用户通过JavaScript触发服务器端事件时,通常会遇到这种情况,例如调用__doPostBack函数。