根据我之前的问题,ASP.net的默认Page.IsPostBack实现是否安全(它不是;它可以伪造...... HTTP动词甚至不必是POST!),我在想; 肯定有一个更好的方法来实现它?我们能否提出一个Page.IsPostBack实现,当它成立时,几乎可以保证表明该页面是一个真正的ASP.net回发?如果一个人只想进行一次安全检查(比如某些内容是否会根据用户的角色出现),并且只有在我们不处理ASP.net回发时才这样做,这一点很重要.
我对如何做到这一点的第一个想法是在属性中实现检查代码,所以我可以在里面写这样的东西Page_Load:
if (!_isPostBack)
{
// Do security check
if (userIsNotAuthorized)
{
btnViewReports.Visible = false;
btnEditDetails.Visible = false;
// etc.
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法安全地实施_isPostBack?也许在ViewState中存储一些难以或不可能进行假冒回传的东西?随机字符串?
我正在制作一个简单的网站,列出某个文件夹中的文件.如果用户具有管理员权限,则用户可以通过单击"删除"按钮来删除文件.
在我的.aspx文件中,我有以下代码:
<asp:Button runat="server" Text="Delete" OnCommand="FileList_Delete"
CommandArgument='<%#Eval("FilePath")%>' Visible='<%CurrentUserIsAdmin()%>' />
Run Code Online (Sandbox Code Playgroud)
因此,如果CurrentUserIsAdmin()返回则不会呈现按钮false.
该按钮呈现如下:
<input type="submit" name="ctl00$ctl00$MainContent$LocalMainContent$FileList$ctrl0$ctl17" value="Delete" />
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果用户修改网页客户端旨在点击这个隐形按钮,我能否确定这种方法对于已知代码攻击是安全的?或者我是否必须在代码隐藏中采取预防措施并在按钮单击事件中验证用户的权利?