OWASP Top 10 入门:Web 网站最常见的漏洞与防御方向

做网站的人迟早会听到"OWASP Top 10"这个词。它是由开放 Web 应用安全项目(OWASP)每几年发布一次的"Web 应用十大最严重风险"榜单,被全球安全社区当成 Web 安全的"体检标准"。本文不用专业黑话,把榜单里最常见的几类漏洞讲清楚,并给出对应的防御方向。

一、OWASP Top 10 是什么

OWASP(Open Worldwide Application Security Project)是一个非营利组织,它定期收集全球范围内的真实攻击数据,发布"十大最严重 Web 应用风险"报告。这份榜单不是学术论文,而是"黑客最常用、危害最大"的实战清单。看懂它,等于知道"敌人最可能从哪里攻进来"。

当前 Top 10 完整清单(2021 版为主,2025 版为最新):

编号 漏洞类别 一句话解释
A01 访问控制失效 权限没管好,低权限用户能碰高权限功能
A02 加密失败 敏感数据明文存储或传输
A03 注入 把用户输入当成代码执行
A04 不安全设计 架构层面缺少安全考虑
A05 安全配置错误 默认密码、多余端口没处理
A06 易受攻击和过时组件 用了有已知漏洞的老版本库
A07 身份识别和认证失效 登录验证有漏洞,账号可被撞库
A08 软件和数据完整性失效 更新包、反序列化被篡改
A09 安全日志和监控失效 被攻击了却没有日志可查
A10 服务端请求伪造(SSRF) 服务器被诱导去访问内网

二、注入:把用户输入当成代码

注入是最经典的 Web 漏洞。它发生在"程序把用户的输入直接拼进命令或查询"时。最典型的是 SQL 注入:一个登录框接收 ' OR '1'='1,如果程序把它直接拼进 SQL,就可能绕过验证拿到数据。

防御方向:参数化查询/预编译语句是第一道防线,其次是输入校验、最小权限数据库账号、WAF。详细做法见SQL 注入防御最佳实践

三、XSS:在别人的浏览器里执行你的代码

跨站脚本(XSS)指攻击者把恶意脚本注入到网页里,当其他用户访问时脚本在他们的浏览器里执行,可能偷走 Cookie、篡改页面、钓鱼。

XSS 的本质是"把数据当代码渲染"。防御方向:输出编码(把 <> 等字符转义)、使用自动转义的模板框架、设置 CSP(内容安全策略)与 HttpOnly Cookie。细节可看XSS 跨站脚本防御

四、失效认证与敏感数据暴露

失效认证(A07):系统允许弱密码、不限制登录尝试次数、会话不过期,导致账号可被撞库、暴力破解。防御:强制强密码策略、登录限速、启用多因素认证(MFA),见双因素认证实现

敏感数据暴露(A02):密码明文存储、信用卡号不加密、不用 HTTPS,导致数据库被拖走就等于数据全泄露。防御:密码用 bcrypt/argon2 哈希加盐存储、敏感字段加密、全程 HTTPS、最小化收集数据。HTTPS 相关内容见HTTPS 入门

五、其他高发问题:配置错误与过时组件

很多攻击并不高明,只是捡软柿子捏:服务器还开着默认端口、管理后台还用默认密码(A05);框架版本停留在三年前、带着几十个已知漏洞(A06)。这两类"低级漏洞"在真实攻击中占比很高。

防御方向:关闭多余服务和端口、改默认口令、开启自动安全更新、定期做依赖扫描。整体加固清单可看网站安全加固指南,以及安全响应头配置

六、漏洞速查表

漏洞 攻击效果 一句话防御
SQL 注入 拖库、绕过登录 参数化查询
XSS 偷 Cookie、钓鱼 输出编码 + CSP
失效认证 账号被撞库 强密码 + MFA + 限速
敏感数据暴露 数据全泄露 哈希存储 + HTTPS
配置错误 后台被直连 关端口、改默认口令
过时组件 已知漏洞被利用 及时更新 + 扫描
SSRF 访问内网 校验请求目标地址

七、常见问题(FAQ)

Q1:小网站也需要担心这些吗? 需要。攻击者大量用自动化脚本扫描全网,小网站因为没有专职安全人员,往往更容易被攻破。

Q2:装了 WAF 是不是就安全了? WAF 能拦截一部分常见攻击,但不能替代代码层面的安全修复,两者是互补关系。WAF 入门见Web 应用防火墙指南

Q3:我该从哪里开始加固? 按性价比排序:强制 HTTPS、参数化查询、密码哈希、登录限速、更新依赖、加安全头。做完这六件事,就能挡掉大多数自动攻击。

Q4:怎么知道网站有没有被攻击过? 开启访问与错误日志、异常登录告警,定期看日志。被攻击却无日志可查(A09)本身也是大风险。

八、小结

一句话总结:OWASP Top 10 是 Web 安全的"敌人地图",注入、XSS、失效认证、敏感数据暴露是重中之重,参数化查询、输出编码、HTTPS、强认证、及时更新是核心防线。 想系统学习安全,可收藏安全与 SSL 分类