OWASP Top 10 2017 A5:2017 访问控制缺陷(Broken Access Control)全面解析:漏洞原理、攻击场景与纵深防御实践
应用安全【免费下载链接】Top10Official OWASP Top 10 Document Repository项目地址https://gitcode.com/gh_mirrors/top/Top10点击查看免费下载导读本文以 OWASP Top 10 官方文档仓库中 2017 年日文版 A5 章节 为主体系统讲解访问控制缺陷Broken Access Control的风险评级、六大常见漏洞形态、八条预防措施与两个经典攻击场景。读者读完可以掌握如何识别 URL 篡改、IDOR不安全对象直接引用、越权、元数据篡改JWT、CORS 误配置与强制浏览等访问控制缺陷并能在开发与测试环节落地默认拒绝、服务端强制、记录所有权等防护原则。文中结合仓库中 英文原版、发布说明、数据方法论 与 2021 版对应章节 提供源码级佐证与版本演进脉络。一、A5:2017 概览与风险评级在 OWASP Top 10 – 2017 中访问控制缺陷位列A5其风险评级表如下源自 日文版原文档 与 英文版| 威胁代理 / 攻击手段 | 安全弱点 | 影响 | | -- | -- | -- | | 访问级别可利用性 2 | 蔓延度 2可检测性 2 | 技术影响 3业务影响因应用而定 |风险评级依据 OWASP Risk Rating Methodology 计算由蔓延度、可检测性、可利用性三个可能性要素与技术影响一个影响要素构成各要素取 1低到 3高。具体计算方法可参考 风险注记 与 风险因子说明。攻击手段层面利用访问控制缺陷是攻击者的基础技能。静态源代码分析工具SAST与动态应用测试工具DAST只能检测访问控制的缺失却无法验证已存在的访问控制是否真正生效。因此访问控制缺陷的发现主要依赖人工测试必要时可借助特定框架中对访问控制缺失的自动化检查。弱点层面访问控制缺陷之所以普遍源于缺乏自动化检测以及应用开发者缺乏有效的功能测试。人工测试是发现缺失或失效访问控制的最佳途径测试对象包括 HTTP 方法GET 与 PUT 等、控制器、对象直接引用等。影响层面技术影响表现为攻击者可以扮演普通用户、管理员或拥有特权功能的用户或者对所有记录进行创建、访问、更新与删除业务影响则取决于应用与数据的保护需求。二、什么是访问控制缺陷访问控制Access Control通过执行策略确保用户不能超出其被授予的权限行事。策略执行失败通常会导致未授权信息泄露、全部数据的修改或破坏、或执行超出用户权限范围的业务功能。在 Top 10 全景视角下见 2017 日语 Top 10 列表A5 的定位是针对仅允许授权者访问的控制未被恰当实现。攻击者可利用此类缺陷访问其他用户账户、查看机密文件、修改他人数据、变更访问权限等进而访问未授权的功能或数据。值得注意的是2017 版发布说明明确指出见 发布说明A4-不安全对象直接引用与A7-功能级访问控制缺失已被合并入A5:2017-访问控制缺陷。这意味着 A5 是一个聚合性类别既涵盖对象级授权IDOR也涵盖功能级授权越权调用管理功能是 2017 版对访问控制问题的一次重新梳理。三、漏洞发现要点六大常见访问控制缺陷根据原文档 脆弱性发现要点常见的访问控制漏洞包括以下六类1. 绕过访问控制检查通过修改 URL、内部应用状态或 HTML 页面或直接使用自定义 API 攻击工具绕过访问控制检查。这类攻击不需要高超技巧改一个参数即可完成。2. 主键篡改导致的对象直接引用IDOR允许修改主键为其他用户的记录从而查看或编辑他人的账户。这是 2017 年数据征集调查中排名第 4 的用户可控键授权绕过CWE-639在 A5 中的体现详见 数据方法论。3. 权限提升Elevation of Privilege包括未登录即冒充用户行事或以普通用户身份登录后执行管理员操作。这是访问控制失效最严重的后果之一。4. 元数据篡改对 JSON Web TokenJWT访问控制令牌、Cookie 或隐藏字段进行重放或篡改以提升权限或滥用 JWT 失效机制。例如攻击者将 Cookie 中角色字段从user改为admin。5. CORS 误配置CORS 错误配置导致未授权 API 访问。若服务器信任了攻击者控制的来源跨域请求即可携带合法凭据访问受保护 API。6. 强制浏览Force Browsing未认证用户可强制浏览需认证页面普通用户可强制浏览需特权页面同时可访问对 POST、PUT、DELETE 方法缺少访问控制的 API。以上六类问题与 2021 版 A01:2021-Broken Access Control 的描述高度一致见 2021 版英文文档后者还补充了违反最小权限原则/默认拒绝这一形态——访问本应仅授予特定能力、角色或用户的资源却对任何人开放。四、防止方法八条纵深防御措施原文档 防止方法 给出了八条核心预防措施。前提是访问控制只有在受信任的服务器端代码或无服务器 API 中强制执行时才有效——攻击者无法修改访问控制检查逻辑或元数据。默认拒绝Deny by default除公开资源外一律默认拒绝访问。这条原则是访问控制的第一道闸门。一次实现、全局复用将访问控制机制实现一次并在整个应用中复用同时尽量减少 CORS 的使用。集中式实现可避免各模块各自为政导致的遗漏。记录所有权模型访问控制模型应强制记录所有权而不是允许用户创建、读取、更新或删除任意记录。即只有记录的所有者或获得授权的角色才能操作该记录。业务约束落到领域模型应用独有的业务限制需求必须在**领域模型Domain Model**中表达而不能仅依赖表现层的临时检查。关闭目录列举、清理敏感文件禁用 Web 服务器的目录列表并确保 Web 根目录下不存在文件元数据如.git和备份文件。记录失败并告警对访问控制失败进行日志记录在适当时如反复失败提醒管理员。限流对 API 和控制器实施速率限制将自动化攻击工具的危害降到最低。JWT 服务端失效JWT 令牌在登出后应在服务器端失效避免令牌被重放滥用。此外原文档强调开发人员与 QA 人员应纳入访问控制相关的功能单元测试与集成测试。五、攻击场景示例原文档提供了两个经典攻击场景均沿用至 2021 版文档对比见 2021 版 Attack Scenarios。场景 #1对象直接引用导致账户越权访问应用在访问账户信息的 SQL 调用中使用了未经验证的数据pstmt.setString(1, request.getParameter(acct)); ResultSet results pstmt.executeQuery();攻击者只需在浏览器中修改acct参数为任意账户编号并发送请求http://example.com/app/accountInfo?acctnotmyacct若缺少适当的验证此处指授权验证而非仅输入格式验证攻击者即可访问任意用户的账户信息。这正是 CWE-639通过用户可控键绕过授权与 CWE-566通过用户可控 SQL 主键绕过授权的典型形态。场景 #2强制浏览管理功能攻击者直接在浏览器中访问目标 URL其中管理员页面要求管理员权限http://example.com/app/getappInfo http://example.com/app/admin_getappInfo如果未认证用户可以访问上述任一页面即为缺陷如果非管理员可以访问管理员页面同样属于缺陷。这一场景对应 CWE-425直接请求 / 强制浏览与功能级访问控制缺失。六、与 CWE 的映射关系A5:2017 原文档在参考资料中映射了以下 CWE见 原文档参考资料| CWE 编号 | 名称 | | -- | -- | | CWE-22 | 受限目录路径名限制不当路径遍历 | | CWE-284 | 访问控制不当授权 | | CWE-285 | 授权不当 | | CWE-639 | 通过用户可控键绕过授权 |到 2021 版A01:2021-Broken Access Control 的 CWE 映射已扩展到34 个见 2021 版 CWE 列表包括 CWE-200向未授权参与者泄露敏感信息、CWE-352CSRF、CWE-425强制浏览、CWE-548目录列举信息泄露、CWE-862缺失授权、CWE-863错误授权等可帮助读者构建更完整的授权缺陷知识图谱。七、数据与方法论背景为何 A5 处于第 5 位根据 2017 数据方法论2017 版进行了社区调查2017 年 8 月 2 日9 月 18 日收到 516 份回答其中通过用户可控键绕过授权IDOR 与路径遍历CWE-639以 493 分排名第 4。调查中虽有意见认为该类别应排名更高但由于与授权脆弱性相关的数据不足最终将其定位为A5:2017-访问控制缺陷并纳入 A5 类别。2017 版数据征集CFD覆盖了23 个贡献者、114,000 个以上应用的数据用于计算各脆弱性的发生率排名。这解释了 A5 评级中蔓延度 2的来源——访问控制问题广泛存在但当时缺乏足够的自动化检测数据支撑更高排名。八、版本演进从合并到登顶2013 → 2017 → 2021访问控制缺陷在 OWASP Top 10 中的地位经历了显著演变| 版本 | 位置 | 变化 | | -- | -- | -- | | 2013 | A4不安全对象直接引用 A7功能级访问控制缺失 | 两个独立类别 | | 2017 | A5访问控制缺陷 | 上述两类合并为 A5 | | 2021 | A01Broken Access Control |跃升至第 1 位|2021 版数据见 A01:2021 概览显示约94% 的应用接受了某种形式的访问控制缺陷测试平均发生率3.81%在贡献数据集中出现次数最多超过 318,000 次共映射34 个 CWE、19,013 个相关 CVE。从合并归类到登顶榜首的历程说明访问控制缺陷是 Web 应用安全中最普遍、最难以自动化检测、且业务影响最直接的弱点类别之一。九、在项目仓库中继续深入本文涉及的相关资料均可在此仓库中查阅原文关联文档主体2017 日文版 A5 章节、2017 英文版 A5 章节Top 10 全景列表2017 日语 T10 列表版本演进说明2017 发布说明A4/A7 合并为 A5 的依据风险评级方法论风险注记、风险因子数据来源与调查数据方法论2021 版对照A01:2021-Broken Access Control英文另有日文版等 15 种语言译本见 2021/docs 目录2017 版官方交付物OWASP Top 10-2017(ja).pdf.pdf)、OWASP-Top-10-2017-en.pdf、OWASP Top 10-2017 (en).pdf.pdf)十、结语访问控制缺陷的根源在于信任了不该信任的对象信任了客户端可篡改的参数、令牌与元数据信任了没人会猜到那个 URL。OWASP Top 10 2017 给出的答案清晰而朴素——默认拒绝、服务端强制、一次实现全局复用、强制记录所有权、关闭目录列举、记录与限流并通过单元测试与集成测试将授权逻辑固化进工程质量。随着 2021 版将 Broken Access Control 推上榜首这一主题在应用安全体系中的地位已无可争议而本文所梳理的六类漏洞形态与八条防御措施正是应对这一榜首风险最实用的行动清单。赞分享应用安全【免费下载链接】Top10Official OWASP Top 10 Document Repository项目地址https://gitcode.com/gh_mirrors/top/Top10点击查看免费下载相关推荐MediaCrawler 上手指南10 分钟跑通 7 个平台的自媒体数据采集MediaCrawler 上手指南10 分钟跑通 7 个平台的自媒体数据采集 MediaCrawler 是一个开源采集工具覆盖小红书、抖音、快手、B 站、微应用安全Buzz Mac 版安装三步选对芯片架构离线语音转文字不再报错Buzz Mac 版安装三步选对芯片架构离线语音转文字不再报错 Buzz 是一款在本地电脑上运行的语音转文字与翻译工具基于 Whisper 模型离线转录应用安全Hindsight 记忆备份与恢复指南一条命令给 AI 智能体记忆上保险Hindsight 记忆备份与恢复指南一条命令给 AI 智能体记忆上保险 半夜服务器磁盘报废重装系统后你发现用了半年的 AI 智能体忘了你是谁。 Hind应用安全上一篇PHP: The Right Way 行为驱动开发BDD指南SpecBDD 与 StoryBDD 的框架选型与实践下一篇Retrospective: [Sprint N / Milestone Name]创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

推荐一款个人备考刷题小程序 - 练题簿

推荐一款个人备考刷题小程序 - 练题簿

一个人备考,到底难在哪里? 备考这件事,说到底是一个人的战斗。 没有老师盯着,没有同学比较,所有的进度全靠自己把握。很多人一开始信心满满,买书、找资料、列计划,可坚持不了几周就泄了气。倒不…

2026/10/10 2:36:01 阅读更多 →
整洁架构实战:依赖反转、用例建模与边界取舍

整洁架构实战:依赖反转、用例建模与边界取舍

简介:《架构整洁之道》是Bob大叔的经典架构著作,这份读书笔记将其324页、六大部分33章内容浓缩为13页精华,面向软件工程师、架构师以及希望快速建立架构知识体系的开发者。笔记系统梳理了设计与架构的本质区别、可修改性与可理解性两个价值维…

2026/10/10 2:36:01 阅读更多 →
二、马克思主义哲学-历史唯物主义

二、马克思主义哲学-历史唯物主义

1. 社会存在与社会意识核心地位:社会存在与社会意识的关系问题,是划分历史唯物主义(唯物史观)与历史唯心主义(唯心史观)的根本标准。1.1社会存在的含义与构成1.1.1定义社会存在也称社会物质生活条件&#x…

2026/10/10 2:36:01 阅读更多 →

最新新闻

Java网上购物商城毕设核心设计:从SpringBoot到订单权限全解析

Java网上购物商城毕设核心设计:从SpringBoot到订单权限全解析

毕业设计选题年年有人纠结,年年有人踩坑。如果你正在Java方向徘徊,看到“网上购物商城”这个题目,我想说的是:这个题非常适合作为毕设,但前提是你得把它做出层次感来,而不是交一个增删改查的“玩具”上去。…

2026/10/10 3:22:16 阅读更多 →
Node.js + Vue图书馆管理系统全栈实战:借阅、在线阅读与性能优化

Node.js + Vue图书馆管理系统全栈实战:借阅、在线阅读与性能优化

写这套基于Node.js和Vue的图书馆管理系统,前后花了大概一个多月的时间,从最初的需求梳理到最终上线跑通,中间踩了不少坑。尤其是借阅流程和在线阅读这两块,看起来功能简单,真正落地时牵扯到的细节特别多:库…

2026/10/10 3:22:16 阅读更多 →
驾校预约系统毕设全解析:微信小程序+PHP+MySQL完整开发指南

驾校预约系统毕设全解析:微信小程序+PHP+MySQL完整开发指南

驾校预约系统这种毕设题目,在计算机类毕业设计里算得上是“常青树”了。每年都能看到不少学生选它,原因很简单:业务场景清晰,用户角色明确,微信小程序端后台管理端的组合也足够撑起一篇论文的工作量。但这道题拿高分和…

2026/10/10 3:22:16 阅读更多 →
lmbench-3.0 实战:系统性能调优的微基准测量指南

lmbench-3.0 实战:系统性能调优的微基准测量指南

简介:lmbench-3.0是一款面向系统管理员、开发者和硬件工程师的开源基准测试工具,核心能力覆盖内存带宽与内存延时两大维度的测量,可有效诊断系统性能瓶颈、对比不同硬件或不同算法实现的差异,并广泛支持Linux、FreeBSD及其他Unix-…

2026/10/10 3:22:16 阅读更多 →
用 lmbench 测透系统性能底裤:内存带宽、延迟与进程开销实操指南

用 lmbench 测透系统性能底裤:内存带宽、延迟与进程开销实操指南

简介:lmbench-3.0是一款适用于Linux及Unix-like系统的开源性能基准测试工具,定位在内存带宽与延迟专项评测及系统综合性能摸底,适合系统管理员、开发者和硬件工程师用于性能诊断与调优验证。压缩包收录了225个文件,核心为60余个C源…

2026/10/10 3:22:15 阅读更多 →
基于Django的Python数学学习系统开发与毕设实战指南

基于Django的Python数学学习系统开发与毕设实战指南

最近又帮两个学生把数学学习系统的毕设从"跑不起来"调到"答辩通过",这套基于Django的Python数学学习系统,前前后后算是摸熟了。趁着假期把经验整理出来,给准备做类似题目的朋友一个参照——不管你是学生本人,…

2026/10/10 3:21:15 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →