事件验证 - 对于Js Heavy应用程序是否真的有必要

时间:2012-01-20 09:02:58

标签: c# asp.net security post eventvalidation

这件事真的很明显,我一直在考虑事件验证,这是非常必要的。我正在研究避免事件验证的方法,以构建面向webservice-javascript的页面,其中基于webservice数据加载下拉列表。我可以禁用该页面的事件验证,但我想了解一些见解(大多数人认为他们可能会这样做),以及Google,雅虎如何进行此类验证。这些组织基于公共场所,几乎所有服务都使用Web服务,严重依赖ajax使其更简单。

  

我应该如何验证案例中的帖子值,事件验证是   禁用。

1 个答案:

答案 0 :(得分:2)

事件验证可确保在加载时可以从页面状态启动页面上触发的任何事件。例如如果Button触发Click事件,则它会使用散列算法检查原始页面的HTML输出中是否存在该按钮。

  

event validation works by combining the hash of a control’s UniqueID property and a hash of each legal value for that control.

这些哈希值存储在名为__EVENTVALIDATION的页面上的隐藏字段中。

这是ASP.NET Web Forms提供的一种故障安全机制,如果您以无状态的方式正确编写应用程序代码,则没有必要。例如,如果您的应用程序仅允许某些用户删除文章,则最好让删除按钮事件处理程序检查用户是否仍有权在文章触发时删除该文章。不要依赖于按钮点击事件被触发以假定用户有权限。

将此主体应用于应用程序的所有输入。手动检查从下拉列表,单选按钮,复选框等传递的值对于当前页面和状态的用户会话是有效的,并且不依赖于ASP.NET事件体系结构来验证用户输入。当您确定这一点时,您可以安全地关闭事件验证。