《Web漏洞防护》读书笔记——第7章,访问控制防护

访问控制的分类

1.基于角色的访问控制
2.自助访问控制
3.强制访问控制
4.基于权限的访问控制

常见问题

1.不安全对象的直接引用:
服务端没有验证用户是否有权限访问目标对象,攻击者直接改变参数就能访问到其他对象的信息。
最常见的发生情形是,如通过http://abc.com?id=111来获取用户111用户的详情,如果服务端未进行适当的访问控制,则可以遍历ID参数来获取到所有用户的信息。

不安全对象的直接引用防护措施:
a.不直接引用id为参数,而是改为基于用户ID生成一个随机值进行访问,随机值会在服务端映射到相应的用户ID,这样就增加了攻击者的攻击难度和攻击成本。
b.执行严格的权限检查,对于任何来自不可信任的源的对象引用,必须进行权限检查,确保该用户的所有请求都具有访问权限。
如可以在Cookie中植入一个Token令牌值,该值通过用户ID及其他参数加密生成,用户无法对Token值进行篡改,当请求到达服务器时,通过解密该Token获取用户ID,与参数中的ID值进行比对,确认两个值是否一致,如果不一致则拒绝用户的请求,并进行日志记录。

2.功能级访问控制缺失:
如果配置出现错误,会造成用户对应用程序的任意访问,如匿名用户可以访问死人数据,普通用户可以访问特权页面,甚至是管理员页面。

3个方面着手去验证:
a.用户界面UI是否存在未授权的功能导航
b.服务端的身份认证和授权功能是否足够完善
c.服务端的权限检查是否仅依赖用户所提供的数据

先以特权用户的身份浏览所有的功能,然后切换到普通用户身份再次访问所有页面,如果对于受限制的页面,服务器对两者的响应是一样的,则很可能存在问题。

需要注意的:
a.确保权限管理模块容易进行升级和审计,避免硬编码。
b.对于每个功能的访问,需要明确其访问权限。
c.当权限管理的执行机制缺失时,应当拒绝所有的访问。
d.对于不应该显示的未授权的链接和按钮,应该在服务端执行检查,不应该在前端进行检查。

CORS跨域资源共享机制

该机制允许Web应用服务器进行跨域访问控制,使得跨域数据传输得以安全进行。

网站通过发送如下HTTP响应头来启用CORS:
Access-Control-Allow-Origin:https://example.com

服务端可以配置Access-Control-Allow-Credentials:true来启用凭证cookie的传输。

如果允许多个源进行跨域请求,可以使用通配符设置(启用了通配符,就不能使用携带凭证的配置,因为CORS规范规定使用携带凭证的请求时,必须指定域名,不能使用通配符,可以保护用户的凭证信息):
Access-Control-Allow-Origin:*

需要注意的问题:
服务器根据用户提供的Origin值来生成Access-Control-Allow-Origin标头,但是不会对Origin值进行校验或者校验不严格,如example.com信任以example.com结尾的任何Origin头,可以构造一个hackerexample.com的Origin头,对于包含“Access-Control-*”的响应头,服务器很有可能就会根据用户与输入的信息生成相关的头信息。

CORS的防护

需要对Origin参数进行严格检查,病设置Access-Control-Allow-Origin头的白名单机制。
Access-Control-Allow-Origin如果被设置为null,会造成Origin为null的请求,从而获得用户凭证,因此需要禁止将Access-Control-Allow-Origin设置为null

漏洞产生的根本原因:
程序需要携带用户凭证进行跨域的资源访问,可以使用请求转发的方式来突破跨域的限制,目前最常用的方法是使用Node.js搭建中转服务器,来进行请求的转发操作。

CORS的工具防护

1.通过Apache Shiro框架实现访问控制(管理授权的3个核心元素:权限、角色、用户)
2.通过ESAPI实现对象的随机化引用
3.通过Spring Security实现CORS的配置

《Web漏洞防护》读书笔记——第7章,访问控制防护相关推荐

  1. 深入分析Java Web技术内幕读书笔记(二)浅析DNS域名解析过程

    上一篇文章<浅析Web请求过程>讲述的是如何发起HTTP请求,对于请求发起过程中很重要的一个步骤--DNS解析过程的描述是一带而过,本篇文章将跟着DNS解析过程来分析域名是如何解析的. 一 ...

  2. 《Spring实战》读书笔记-第4章 面向切面的Spring

    <Spring实战>是学习Spring框架的一本非常经典的书籍,之前阅读了这本书,只是在书本上写写画画,最近整理了一下<Spring实战>的读书笔记,通过博客的方式进行记录分享 ...

  3. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境 文章目录 黑帽python第二版(Black Hat Python 2nd ...

  4. 《Spring实战》读书笔记-第3章 高级装配

    <Spring实战>是学习Spring框架的一本非常经典的书籍,之前阅读了这本书,只是在书本上写写画画,最近整理了一下<Spring实战>的读书笔记,通过博客的方式进行记录分享 ...

  5. 《Java编程思想》读书笔记 第十三章 字符串

    <Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...

  6. Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据

    Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 Oracle PL/SQL 程序设计读书笔记 - 第7章 使用数据 7.1 程序数据的命名 PL/SQL要求在给数据结构命名的时候应 ...

  7. Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理

    Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...

  8. PMP读书笔记(第9章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第九章 项目资源管理 项目资源管理 项目资源管理的核心概念 项目资源管理的趋势和新兴实践 裁剪考虑因素 在敏捷或适应型环境中需要考虑的因素 9 ...

  9. PMP读书笔记(第2章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第二章 项目运行环境 2.1 概述 2.2 事业环境因素 2.2.1 组织内部的事业环境因素 2.2.2 组织外部的事业环境因素 2.3 组织 ...

  10. PMP读书笔记(第1章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第一章 引论 1.1 概述指南和目的 1.1.1 项目管理标准 1.1.2 通用词汇 1.1.3 道德与专业行为规范 1.2 概述指南和目的 ...

最新文章

  1. Linux下集群技术应用概述
  2. 数组的选择--固定大小数组模板array存在的意义!
  3. php yield 递归,递归运行所有yield请求h的废弃输出文件
  4. pandas将df赋值到另一个df_Python pandas将多级列标题df映射到另一个df
  5. .Net Core应用框架Util介绍(一)
  6. LeetCode 1409. 查询带键的排列(map模拟)
  7. luogu P2216 [HAOI2007]理想的正方形 递推+ST表
  8. HttpClient 入门与正确使用姿势
  9. python在数字后添加字符_用python生成数字、字母和特殊字符混合的字符串
  10. 算法:Valid Parentheses(有效的括号)
  11. 2021年低压电工考试题及低压电工模拟考试
  12. TD-LTE原理及关键技术个人笔记(1)TD-LTE概述
  13. Android 通过usb调用高拍仪进行拍照
  14. [转] 英文写作中分号和冒号的使用
  15. 丹佛大学计算机专业,丹佛大学计算机工程排名第79(2020年TFE美国排名)
  16. 更改计算机名后金蝶无法登录,《金蝶KIS专业版登录时出现问题,请重新输入终极解决全过程》.doc...
  17. 前端开发工程师 - 02.JavaScript程序设计 - 第2章.进阶篇
  18. 谷歌地图上不去了,用LSV就可以
  19. configure error /bin/bash /config sub failed
  20. 论文页眉设置 奇偶页页眉均为章序及章标题 论文按章节设置页眉

热门文章

  1. C语言getchar()=='\n'的使用,对输入的任意个字符操作
  2. linux中swap的权限,有关 Linux Swap
  3. 南阳oj-----找球号(一)(set)
  4. ibatis mysql 配置文件详解_Mybatis主配置文件的properties标签详解
  5. phonegap文件上传(java_php),Android应用开发之使用PhoneGap实现位置上报功能
  6. 奇怪的信 c语言 整数位数为偶数求和
  7. 电脑功耗监测_VOCS在线监测系统
  8. pat A1032:sharing 题解(简单静态链表)
  9. 容器技术Docker K8s 20 容器服务ACK基础与进阶-存储管理
  10. jsoup html to text,Jsoup和htmlunit结合使用。