详解Web应用安全系列(4)失效的访问控制

在Web安全中,失效的访问控制(也称为权限控制失效或越权访问)是指用户在不具备相应权限的情况下访问了受限制的资源或执行了不允许的操作。这通常是由于Web应用系统未能建立合理的权限控制机制,或者权限控制机制失效所导致的。

危害

  1. 数据泄漏:攻击者可能通过越权访问获取敏感数据,如用户个人信息、财务数据、家庭监控视频等。
  2. 数据被恶意篡改:攻击者可能通过越权访问修改数据,如修改账户余额等。
  3. 隐私侵犯:攻击者获取他人个人信息后可能侵犯他人隐私。
  4. 诈骗实施:获取他人个人信息后转卖给诈骗集团实施诈骗。
  5. 法律责任与声誉损害:Web应用用户的个人信息数据被非法获取后篡改,可能导致用户利益受损,Web应用提供商也可能面临法律责任和声誉损害。

分类

  1. 系统在实现过程中违背了"最小权限原则"或"默认拒绝原则",导致用户获得了一些特殊权限,而这些特殊权限原本只应该授权给特定的用户或角色。
  2. 通过修改URL地址、内部程序状态、HTML页面,或者使用工具修改API请求的方式绕过访问控制。
  3. 通过提供唯一ID的方式预览或修改其他账户信息及数据。
  4. 未经过访问控制地通过POST、PUT和DELETE方法访问API。
  5. 提权操作,如未登录状态下的用户操作,或者常规用户登录状态下的管理员操作。
  6. 元数据操纵,如重放或修改JWT(JSON Web Token)访问控制令牌,或通过操纵Cookie的方式进行提权。
  7. CORS误配置,可能导致来自未认证源的API访问。

防范措施

  1. 访问控制仅在受信任的服务器端强制执行,确保代码或无服务器API无法被攻击者修改。
  2. 除公共资源外,默认拒绝所有请求,遵循"最小权限原则"和"默认拒绝原则"。
  3. 实施一次访问控制机制并在整个应用程序中重复使用,包括最小化CORS使用。
  4. 模型访问控制应强制执行记录所有权,而不是接受用户可以创建、阅读、更新或删除任何记录。
  5. 记录访问控制失败,并在适当时提醒管理员。
  6. 速率限制API和控制器访问,以最大限度地减少自动攻击工具的伤害。
  7. 注销后,JWT令牌应在服务器上失效。
  8. 开发人员和QA人员应包括功能访问控制的单元和集成测试。
    请注意,这些只是一些常见的防范措施,实际的安全策略应根据具体的应用场景和需求进行定制。
    另外,我最近开发并开源了一个支持免费申请通配符SSL证书的平台:华迅FreeCert,解决了每隔一段时间就要重新申请和部署证书(因为传统的云厂商提供的免费证书一般只有三个月有效期),不支持免费申请通配符证书这两大痛点,欢迎大家注册使用并提供宝贵意见,谢谢!