以下内容学习自 <白帽子讲Web安全>
权限控制:某个主体(subject)对某个客体(object)进行某些操作,而系统对这个操作的限制就是权限控制
在一个安全系统中,确定主体的身份叫认证,而客厅是一种资源,是主体发起请求的对象。主体对客体的操作中,主体不能无限制的对客体进行操作,所以,主体能够做什么,就是权限。权限可以区分为不能的能力,比如Linux系统中,对文件的读,写,执行能力,在Web应用中,根据访问客体的不同,常用的访问控制包括:"基于URL的访问控制,“基于方法(method)的访问控制”,“基于数据的访问控制”。
基于URL 的访问控制
在某些情况下,一些页面不会被链接到前台页面上,搜素引擎也不会搜素到这些页面,这些也被"藏起来"了。但是这样并不安全,一些攻击者会使用一部包含很多后台路径的字典,把这些藏起来的页面扫出来。
那么应该怎么设计一个访问控制系统呢?
- 垂直权限管理
访问控制实际上是建立用户与权限之间的对应关系,现在广泛应用的一种方法是"基于角色的访问控制(Role-Based Access Control)",简称 RBAC
RBAC事先会在系统中定义不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一个权限的集合,而系统中所有的用户都会被分配到不同的角色中。一个用户可能拥有多个角色。在系统验证权限时,只需要验证用户所属的角色,然后就可以根据该角色所拥有的权限进行授权了。
Spring Security 是基于Spring MVC 框架,
Spring Security 中的权限管理就是RBAC模型的一个实现。
未完