《白帽子讲Web安全》10-访问控制

第10章 访问控制

对于权限的合理分配,一直时安全设计中的核心问题。

10.1 What Can I Do?

  1. 认证解决了“Who am I?”的问题,而授权解决了“What Can I Do?”的问题。
  2. 某个主体(subject)对某个客体(object)需要实施某种操作(operation),而系统对这种操作的限制就是权限控制。
    • 网络中通过路由设备或者防火墙建立基于IP的访问控制
    • 操作系统中对文件的访问控制
  3. Web应用中,根据访问客体的不同,常见的访问控制可以分为:
    • 基于URL的访问控制
    • 基于方法(method)的访问控制
    • 基于数据的访问控制
  4. 当访问控制存在缺陷时的后果。
    • 正常情况下,管理后台的页面应该只有管理员才能够访问。
    • 系统未对用户访问权限进行控制,导致任意用户只要构造出了正确的URL,就能够访问到这些页面。
  5. 把需要保护的页面“藏”起来,并不是解决问题的办法。
    • 攻击者惯用的伎俩时使用一部包含了很多后台路径的字典,把这些“藏”起来的页面扫出来。

10.2 垂直权限管理

  1. “基于角色的访问控制(Role-Based Access Control),简称RBAC。
用户 - 角色 - 权限

RBAC事先会在系统中定义出不同的角色,不同的角色拥有不同的权限,一个角色实际上就是一个权限的集合。

  1. Spring Security的授权功能
    • 基于URL的访问控制
    • 基于method的访问控制
    • 基于表达式的访问控制
  2. 在配置权限时,应该使用“最小权限”原则,并使用“默认拒绝”的策略,只对有需要的主体单独配置“允许”的策略。这在很多时候能够避免发生“越权访问”。

10.3 水平权限管理

  1. 在正常情况下,应该只有用户自己才能访问自己的私有数据。
    • 优酷网用户越权访问问题:用户可以查看他人的来往信件。
    • 来伊份用户可以查看其他用户的个人姓名、地址等隐私信息。
  2. 由于水平权限管理是系统缺乏一个数据级的访问控制所造成的,因此水平权限管理又可以称之为“基于数据的访问控制”。
  3. 目前数据级权限管理并没有很通用的解决方案,一般是具体问题具体解决。
    • 一个简单的数据级访问控制,可以考虑使用“用户组(Group)”的概念。
    • 可以考虑实现一个规则引擎,将访问控制的规则写在配置文件中,通过规则引擎对数据的访问进行控制。

10.4 OAuth简介

  1. OAuth是一个在不提供用户名和密码的情况下,授权第三方应用访问Web资源的安全协议。
  2. OpenID解决的是认证问题,OAuth则更注重授权。
  3. 常见的应用OAuth的场景,一般是某个网站想要获取一个用户在第三方网站中的某些资源或服务。
  4. 在OAuth 1.0中,涉及3个角色:
    • Consumer:消费方(CLient)
    • Service Provider:服务提供方(Server)
    • User:用户(Resource Owner)
  5. OAuth举例
    • Request Token只能用于获取用户的授权
    • Access Token才能用户访问用户的资源
  6. 使用第三方实现的OAuth库也是一个比较好的选择。
    • OAuth涉及诸多加密算法、伪随机算法等容易被程序员误用的地方。
  7. 常见的需要用到OAuth的地方有桌面应用、手机设备、Web应用。
    • OAuth 1.0只提供了统一的接口
    • OAuth 1.0的应用架构在扩展性方面也存在一些问题,当用户请求数庞大时,可能会遇到一些性能瓶颈。
    • OAuth 2.0改善了上述情况。

10.5 小结

  1. 访问控制解决了“What Can I Do?”的问题
  2. 垂直权限管理——基于角色的访问控制
  3. 水平权限管理——基于数据的访问控制
  4. 访问控制与业务需求息息相关,并非一个单纯的安全问题。
  5. 无论选择哪种访问控制方式,在设计方案是都应该满足“最小权限原则”。这是权限管理的黄金法则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值