A01:2025 - 失效的访问控制
💡 学习提示: 本文档介绍 OWASP Top 10 A01 - 失效的访问控制,这是 2025 年排名第一的 Web 应用安全风险。
⚠️ 法律声明: 本文档仅供学习和授权测试使用。
📋 风险概述
失效的访问控制 (Broken Access Control) 是指攻击者能够绕过系统的访问控制机制,访问未授权的功能或数据。这是 OWASP Top 10:2025 中排名第一的安全风险。
🔴 危害等级:严重
| 项目 |
说明 |
| 发生率 |
3.81% (最高) |
| 平均影响 |
7.81/10 |
| 最大影响 |
9.67/10 |
| 漏洞数量 |
318,433 |
🎯 常见场景
1. 越权访问 (Privilege Escalation)
普通用户 → 访问管理员功能
用户 A → 访问用户 B 的数据
2. 目录遍历 (Path Traversal)
# 攻击示例
GET /files?name=../../../etc/passwd
GET /download?file=....//....//config.ini
3. 未授权的 API 调用
# 未验证权限直接调用 API
DELETE /api/users/123
PUT /api/admin/settings
4. 前端访问控制
// ❌ 错误:仅在前端隐藏,未在后端验证
if (user.role === 'admin') {
showAdminButton();
}
// 攻击者可直接调用 API
⚠️ 典型漏洞
漏洞 1: IDOR (不安全的直接对象引用)
# 攻击者修改 URL 中的 ID 访问他人数据
https://example.com/account/123 → 自己的账户
https://example.com/account/124 → 他人的账户 ❌
漏洞 2: 缺少权限检查
# ❌ 错误示例
@app.route('/admin/delete_user/<user_id>')
def delete_user(user_id):
# 未检查当前用户是否为管理员
db.delete_user(user_id)
return "Deleted"
漏洞 3: 硬编码访问控制
# ❌ 错误:依赖客户端传来的角色
role = request.json.get('role') # 可被篡改
if role == 'admin':
grant_admin_access()
🛡️ 防御方法
✅ 1. 实施最小权限原则
# ✅ 正确:基于角色的访问控制
@require_role('admin')
def delete_user(user_id):
db.delete_user(user_id)
✅ 2. 服务端验证
# ✅ 正确:在服务端验证权限
def get_account(user_id, current_user):
if current_user.id != user_id and not current_user.is_admin:
raise PermissionDenied()
return db.get_account(user_id)
✅ 3. 使用安全的框架
# ✅ 使用 Django 的权限系统
from django.contrib.auth.decorators import permission_required
@permission_required('accounts.delete_user')
def delete_user_view(request, user_id):
...
✅ 4. 记录访问控制失败
# ✅ 记录未授权访问尝试
if not user.has_permission('delete'):
log_security_event(f"Unauthorized delete attempt by {user.id}")
raise PermissionDenied()
🧪 测试方法
手动测试
-
越权测试
- 使用普通用户账户登录
- 尝试访问管理员 URL
- 修改请求参数访问其他用户数据
-
HTTP 方法测试
# 尝试未授权的 HTTP 方法
curl -X DELETE /api/users/123
curl -X PUT /api/admin/settings
-
目录遍历测试
curl "https://target.com/files?name=../../../etc/passwd"
自动化测试
# 使用 OWASP ZAP 扫描
zap-baseline.py -t https://target.com
# 使用 Burp Suite 进行授权测试
📊 影响评估
业务影响
- 数据泄露: 未授权访问敏感数据
- 功能滥用: 执行未授权操作
- 合规风险: 违反 GDPR、等保等法规
技术影响
- 系统完整性受损
- 用户信任度下降
- 可能导致进一步攻击
🎓 学习资源
推荐阅读
实践练习
- OWASP Juice Shop - 访问控制挑战
- PortSwigger Web Security Academy - 访问控制实验室
🔗 参考资料
最后更新:2026-03-10
内容来源:OWASP Top 10:2025 官方文档