授权失效
BOLA 与访问控制缺陷
授权失效 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
身份验证与授权
身份验证用于证明您是谁。授权决定您可以执行哪些操作。
授权失效意味着系统允许用户执行或查看其本不应执行或查看的操作和内容。
什么是 BOLA
BOLA 代表对象级授权失效。
这是应用程序接口面临的首要风险:应用程序接口会检查您是否已登录,却不会检查您请求的特定对象是否确实属于您。
BOLA 示例
假设您的账户是用户 100。
GET /api/users/100/orders如果您更改 ID 后服务器仍然返回响应,您就读取了其他人的订单。这就是 BOLA。
BOLA 为什么会发生
开发人员经常信任请求中的 ID。
他们忘记验证已登录用户是否确实拥有该对象。解决方法是在每个请求中检查所有权。
函数级授权
另一个缺陷是BFLA:函数级授权失效。
普通用户调用仅限管理员使用的操作却成功了,因为端点从未检查用户的角色。
BFLA 示例
请考虑一个管理员路由:
DELETE /api/admin/users/55如果普通用户可以成功调用它,说明应用程序接口未能强制执行基于角色的访问控制。
批量赋值
有些应用程序接口会盲目地将请求字段映射到记录上。
用户可以在个人资料更新中添加类似 role=admin 的字段,悄悄提升自己的权限。
在服务器端检查
绝不要依赖客户端隐藏按钮或字段。
服务器必须强制执行每项授权决策,因为攻击者会直接发送请求,完全绕过您的用户界面。
使用不可预测的 ID
连续的 ID 会使 BOLA 很容易被利用。
使用类似 UUID 的随机标识符不能取代授权检查,但可以消除简单的猜测下一个数字的攻击方式。
默认拒绝
安全的应用程序接口应默认拒绝。
只有明确规则授予访问权限时,访问才会被允许。这样,遗漏的检查会安全失败,而不是泄露数据。
测试授权
授权漏洞很容易隐藏,因此请有意地测试它们。
尝试使用您自己的令牌访问其他用户的数据。如果成功,您就发现了一个需要修复的严重缺陷。
快速检查
应用程序接口确认您已登录,但在您更改 ID 后返回了其他用户的记录。这属于什么漏洞?
回顾
授权失效会让用户访问其本不应访问的内容。请注意BOLA、BFLA和批量赋值。
在服务器端强制执行所有权和角色检查,默认拒绝,并有意地测试授权。
常见问题解答
「授权失效」课时是免费的吗?
是的 — 「授权失效」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「授权失效」这节课中我会学到什么?
BOLA 与访问控制缺陷 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「授权失效」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。