关于我的previous question,关于ASP.net的默认Page.IsPostBack实现是否安全(不是;它可能是假的...... HTTP动词甚至不必是POST!),我在想;肯定有一个更好的方法来实现它?我们是否可以想出一个Page.IsPostBack实现,如果它是真的,几乎可以保证表明该页面是实际的ASP.net回发?如果只想进行一次安全检查(例如根据用户的角色是否显示某些内容),并且只有在不处理ASP.net回发时才这样做,这一点很重要。Page.IsPostBack的安全实现?
我的第一个想法是如何做到这一点的实现在属性检查代码,这样我就可以写这样的事情里面Page_Load
:
if (!_isPostBack)
{
// Do security check
if (userIsNotAuthorized)
{
btnViewReports.Visible = false;
btnEditDetails.Visible = false;
// etc.
}
}
是否有安全地实现_isPostBack
的方法吗?也许在ViewState中存储一些难以或不可能的东西来伪造回传?随机字符串?
您在安全环境中询问“几乎可以保证”吗?这是没有意义的。它要么是安全的,要么是不安全的。 “几乎”与未安全相同 – jalf 2011-06-13 09:24:27
嗯,我的意思是'几乎保证'在RSA加密“几乎安全”的情况下;理论上它可能是暴力强迫的,或者你可以'运气出去'并猜测某人的关键,但这是非常不可能的或困难的。 – Jez 2011-06-13 09:27:25
您无法相信_anything_来自客户端。只要重做你的逻辑,你就拥有Session对象。 – 2011-06-13 09:38:22