OWASP Top 10 漏洞的本质是:开发者偷懒,黑客笑开颜。防御核心:不信任任何用户输入 + 最小权限原则。
1. SQL注入(SQL Injection)
段子:
HR:你叫什么名字?
程序员:'; DROP TABLE 员工表; --
HR:你被录用了!(然后公司数据库消失了)
技术原理:
- 攻击者通过输入恶意SQL代码,欺骗数据库执行非法操作(比如删库、窃取数据)。
- 例如:登录框输入
' OR 1=1 --,直接绕过密码验证。
严重后果:
防御方法:
- 使用参数化查询(Prepared Statements),禁止拼接SQL语句。
- 对用户输入做严格过滤(比如禁止特殊符号)。
2. 失效的访问控制(Broken Access Control)
段子:
HR:普通用户能看CEO工资吗?
程序员:把URL里的user_id=123改成user_id=CEO就行!
HR:你被录用了!(然后公司内网被扒光)
技术原理:
- 系统未验证用户权限,导致越权访问(比如普通用户访问管理员页面)。
- 例如:直接访问
/admin/delete?user=123 删除他人账户。
严重后果:
防御方法:
- 强制权限验证(每次请求检查用户角色)。
- 避免在URL或参数中暴露敏感信息(如用Token代替user_id)。
3. 加密机制失效(Cryptographic Failures)
段子:
HR:用户密码怎么存?
程序员:用凯撒密码!比如"123456"加密成"234567"。
HR:你被录用了!(然后黑客笑醒)
技术原理:
- 使用弱加密算法(如MD5、凯撒密码)或明文存储密码。
- 例如:数据库被拖库后,黑客直接破解弱哈希密码。
严重后果:
防御方法:
- 使用强哈希算法(如bcrypt、Argon2)。
- 加盐(Salt)存储密码,防止彩虹表攻击。
4. 不安全设计(Insecure Design)
段子:
HR:需求是“用户能删除所有数据”。
程序员:按钮就叫“一键删库”!
HR:你被录用了!(然后公司原地倒闭)
技术原理:
- 系统设计时未考虑安全逻辑(比如允许用户无限制删除数据)。
- 例如:未设计确认机制,导致误操作或恶意操作。
严重后果:
防御方法:
- 设计时遵循“最小权限原则”(用户只能做必要操作)。
- 关键操作需二次确认(如输入密码、短信验证)。
5. 安全配置错误(Security Misconfiguration)
段子:
HR:服务器怎么配置的?
程序员:开了调试模式,密码写在/etc/password.txt!
HR:你被录用了!(然后黑客直接接管服务器)
技术原理:
- 使用默认配置(如默认密码、开启调试接口)。
- 例如:未关闭的调试接口暴露敏感信息。
严重后果:
防御方法:
- 定期检查服务器配置(关闭不必要的服务、修改默认密码)。
- 使用自动化工具扫描配置漏洞。
6. 有缺陷的组件(Vulnerable Components)
段子:
HR:我们用了10年前的框架,有问题吗?
程序员:漏洞越多,功能越丰富!
HR:你被录用了!(然后黑客用已知漏洞轻松入侵)
技术原理:
- 使用过时或已知漏洞的第三方库/框架。
- 例如:Apache Struts 2 的漏洞导致远程代码执行。
严重后果:
防御方法:
- 定期更新第三方组件到最新版本。
- 使用依赖扫描工具(如OWASP Dependency-Check)。
7. 身份验证失败(Authentication Failures)
段子:
HR:用户登录怎么设计?
程序员:密码输错1000次也不锁定!
HR:你被录用了!(然后黑客暴力破解所有账号)
技术原理:
- 弱密码策略(如允许简单密码、无登录失败锁定)。
- 例如:密码
123456或password直接被猜中。
严重后果:
防御方法:
- 强制复杂密码(大小写+数字+符号)。
- 登录失败锁定机制(如5次失败后锁定15分钟)。
8. 数据与隐私泄露(Data Integrity Failures)
段子:
HR:用户数据怎么传输?
程序员:用HTTP明文发送,比如银行卡=6228488888888888!
HR:你被录用了!(然后黑客在咖啡厅偷看数据)
技术原理:
- 未加密传输敏感数据(如HTTP明文、弱SSL配置)。
- 例如:中间人攻击(MITM)窃取用户信息。
严重后果:
防御方法:
- 全站HTTPS(使用强加密协议如TLS 1.3)。
- 敏感数据加密存储(如AES-256)。
9. 日志与监控不足(Logging Failures)
段子:
HR:服务器被黑了怎么办?
程序员:没日志!就当无事发生!
HR:你被录用了!(然后黑客来去无踪)
技术原理:
- 未记录关键日志(如登录日志、操作日志)。
- 例如:黑客入侵后无法追踪攻击路径。
严重后果:
防御方法:
- 记录关键操作日志(保留至少6个月)。
- 部署安全监控系统(如SIEM)实时报警。
10. 服务端请求伪造(SSRF)
段子:
HR:这个功能能读内部文件吗?
程序员:能!比如/proxy?url=file:///etc/shadow!
HR:你被录用了!(然后黑客拿到服务器最高权限)
技术原理:
- 服务端未校验用户输入的URL,导致访问内部资源。
- 例如:通过SSRF读取服务器敏感文件或攻击内网系统。
严重后果:
防御方法:
- 禁止用户自定义URL访问内部资源。
- 使用白名单机制限制可访问的域名/IP。