《白帽子讲web安全》笔记之认证与授权那些事

来源:互联网 发布:007支票打印软件 编辑:程序博客网 时间:2024/04/30 09:39

首先从英文单词上看,认证为Authentication,而授权是Authorization。

同时两者在概念上有着明显差别。

认证是为了认出你是谁,而授权是确定你能干什么


认证是建立在密码的基础上的,用户名、密码正确则认证通过,但一般的登陆操作,考虑到用户体验,当用户登陆成功后,不可能让用户每次请求该页面的其它资源时都重新认证一遍。因此,会新产生一个凭证来代表该登陆成功的用户,这个就是sessionID。只要用户的请求中含有这个sessionID,就能证明是该用户。可一旦泄露,就over了。如下有两种劫持方式:

Session劫持——攻击者盗取sessionID,用sessionID登陆目标账户攻击,实际上使用了目标账户在服务器端的有效session。故称为session劫持。

Cookie劫持——当sessionId是加密存放在cookie中的时,上面的劫持就被称为cookie劫持。(最常见的就是XSS攻击)


授权,是安全设计中的核心问题。权限分配不当,很可能让黑客,一步步渗透进去,最后拿到webshell,直接控制服务器,想干啥就干啥。

因此,设计时因遵循如下两个设计原则。

1。垂直权限管理,基于角色的权限管理RBAC(role-based access control)。

首先先定义出不同的角色,不同角色拥有不同的权限。然后,用户会被分到不同的角色中去,行使不同的权限。一个用户可以拥有不同的角色。比如linux下,你可以先guest的角色进入系统,也可以通过sudo,输入正确的密码,直接切到root角色下。


2。水平权限管,基于数据的权限管理。

同一角色下的不同用户,可以看到共享的内容。比如说,同为买家的A和B都可以看到淘宝上卖的是哪些商品,而看不到管理员角色所能看到的后台。但是,A和B虽所处同一级别的角色,但是A肯定是不被允许来查看B的个人资料(如电话,住址)。这就是水平权限管理。同一角色下,有公共的权限,也有独立的权限。一般来说,可以通过分用户组来管理


以上是关于《白帽子讲web安全》第9,10章的一些个人比较重要的关键点,具体详细内容还是请参考原文吧。


0 0