如果正在检查用户的角色以确定他们是否可以访问页面,那么仅将这种检查放在if (!Page.IsPostBack) { ... }
内是否安全? 客户端是否有可能独立于ASP.net导致Page.IsPostBack == true
;也就是说,客户端POST到页面并设置正确的表单字段?如果可能的话,那么我认为最佳实践是检查每个页面加载的安全性,而不仅仅是Page.IsPostBack == false
。
最佳答案
容易地。而且它甚至不必通过HTTP发布。
IsPostBack检查ViewState和Event *隐藏字段。如果在查询字符串上提供了这些字段,则IsPostBack实际上将返回true,因此,例如,尝试使用该杰瑞操纵的查询字符串加载图像的客户端页面将导致后面的代码认为它是回发的。