owasp top 10 2025
A01:2025 - Broken Access Control
越权访问类:
- 成因:后端开发人员疏忽,未对用户的增删改查权限进行严格校验或根本没有校验
分类:可分为水平越权,垂直越权,无权限操作
- 水平越权类:服务器端在处理用户的增删改成时没有判断数据的所属人或所属主体导致的
- 垂直越权类:提权,低权限的发送高权限的请求,从而获得高权限的操作
- 做系统的时候考虑不到做权限控制或者做了权限控制但是做得漏洞百出
- 常见:
URL篡改:例如更改/user/1001为/user/1002
绕过客户端权限判断:前端按钮隐藏并不能限制后端访问
CORS配置不当导致恶意域名跨站读取数据
- 防御手段
所有权限校验必须在服务端完成
实施最小权限原则(PoLP)
使用访问控制模型(如RBAC、ABAC)
安全的对象引用映射(不直接暴露数据库ID)
对敏感操作添加二次验证或操作审计
jwt
:JWT 里已经包含了用户信息和过期时间等声明无状态:服务器不保存 JWT 的签发记录,验证时只靠签名和过期时间判断它是否有效
如果是无状态 JWT,服务器没有存这个 JWT,所以即使你登出了,这个 JWT 在 11:00 之前仍然是有效的,任何人拿着它都能访问受保护的资源
解决方法:
1.缩短有效期
2.刷新令牌机制
3.引入黑名单,使其变为有状态;在登出或者检测到异常时,将该jwt的唯一标识加入黑名单中,验证时先查询黑名单
4.密钥轮换
jwt是一种标准协议,oauth是一个安全授权框架
A02:2025 - Security Misconfiguration
安全配置错误1
使用了带有已知漏洞的库或框架,攻击者可能利用这些漏洞进行攻击
1 | 定期扫描和更新组件,确保不使用有已知漏洞的库。 |
A03:2025 - Software Supply Chain Failures
软件供应链故障1
2
3
4
5
6不会仔细跟踪所有组件的版本
该软件存在漏洞、未被支持或已过时
不会定期扫描漏洞,而是订阅与你所用组件相关的安全公告
没有加强供应链的每个环节,特别关注门禁和最低权限的应用
会以风险为基础、及时的方式修复或升级底层平台、框架和依赖。这种情况通常发生在修补是每月或季度一次、受变更控制的环境中,组织在修复漏洞之前可能面临数天甚至数月不必要的暴露风险
软件开发者不会测试更新、升级或补丁库的兼容性
1 | 集中生成和管理整个软件的软件物料清单 |
A04:2025 - Cryptographic Failures
加密错误1
2
3
4
5应该被加密的数据没有进行加密;
在代码中硬编码了密钥或密码;
使用了已经可以被破解或已经被证明有漏洞的加密算法;
使用了比较弱的密钥,可以很容易被猜到;
服务器配置不当或者应用程序 bug 导致的数据泄露
1 | 例如密码、银行卡号码、身份证号码和商业秘密等显而易见的敏感数据 |
1 | 对应用程序处理、存储或传输的数据进行分类和标记。根据隐私法律、监管要求或业务需求,识别哪些数据属于敏感。 |
A05:2025 - Injection
1 | 用户提供的数据不会被应用程序验证、过滤或净化。 |
1 | 使用参数化查询避免SQL注入。 |
A06:2025 - Insecure Design
不安全设计1
设计上没考虑安全问题
1
需求阶段加入"安全评审",用"威胁建模"识别风险
A07:2025 - Authentication Failures
认证失败1
2
3
4允许自动化攻击,爆破,弱口令密码等等
允许用户创建已被泄露的已知凭证的新账户
使用纯文本、加密或弱哈希密码数据存储
它会在 URL 中暴露会话标识符、隐藏字段或其他客户端可访问的不安全位置
1 | 实施多因素认证(MFA) |
A08:2025 - Software or Data Integrity Failures
完整性失效1
软件和数据完整性失效涉及代码和基础设施,无法防止无效或不可信的代码或数据被当作可信且有效
1 | 使用数字签名或类似机制来验证软件或数据是否来自预期来源,且未被篡改。 |
A09:2025 - Security Logging and Alerting Failures
1 | 缺乏充分的日志记录和监控,使得攻击活动不易被察觉 |
1 | 开启详细的日志记录并定期审计。 |
A10:2025 - Mishandling of Exceptional Conditions
1 | 程序未能预防、检测和响应异常和不可预测的情况,导致崩溃、意外行为,有时甚至出现漏洞 |
1 | 捕捉并处理特殊情况确保我们的项目基础设施不会被遗弃应对不可预测的情况 |



