关于web应用程序安全的思考(序)
2008-11-26 13:36:02 来源:WEB开发网有了这样互相支持,又相互独立的权限使用和权限管理分离理念后,权限使用就变得非常简单,权限架构又可以任意扩展,灵活变化,最终达到权限接口的统一使用。
换一种安全管控观念
先给出一段在aspx中常见的安全管控代码:
假设登录后UserID存放在Session["UserID"]中
此页面是一个用户信息的修改删除页面,有两个按钮:
SaveBtn : 保存修改按钮,
DeleteBtn : 删除用户按钮
有三个角色
管理员:可以进行修改和删除
主管:只可以修改
普通用户:只能浏览
以下为权限管控相关的代码片段:
if(Session["UserID"] == null)
Response.Redirect("Login.aspx"); //未登录转向登录页面
string userID = Session["UserID"].ToString();
//预设不能进行任何动作(普通登录用户只能看)
SaveBtn.Visible = false;
DeleteBtn.Visible = false;
if(IsAdmin(userID)){ //如果用户是管理员,则可以修改和删除
SaveBtn.Visible = true;
DeleteBtn.Visible = true;
}
else if(IsManager(userID)){ //如果用户是主管,则只能修改
SaveBtn.Visible = true;
}
顺便提一下:如果安全级别要求更高的话,在SaveBtn_Click和DeleteBtn_Click的事件中也要加入IsAdmin和IsManager的相关代码,以保证不被修改Request,来仿真这些按钮的动作(要验证可以将web运作原理一节中的form.aspx作相应修改,将送出按钮的Visible设为false,看是否可以触发Click事件就可知)
这样的权限管控方式对于小型的,简单的系统可能能够满足,但是一旦系统比较大或者对权限的要求复杂一些时,就会发生问题:
更多精彩
赞助商链接