OWASP Top 10
OWASP Top 10 是 Web 安全领域的“金标准”,我们用一种生动有趣的方式来介绍它,让它不再是枯燥的列表。
OWASP Top 10 导览:Web 安全的“武林秘籍”
欢迎来到 Web 安全的世界
在学习具体的黑客攻防技巧之前,我们需要一张“藏宝图”,一张能告诉我们**最常见、最危险的宝藏(漏洞)**藏在哪里的地图。在 Web 应用安全领域,这张最权威的地图,就是 OWASP Top 10。
什么是 OWASP?
想象一个由全世界最顶尖的“安全大师”组成的、非盈利的“武林盟会”。这个盟会的名字叫做 OWASP (Open Web Application Security Project®,开放式 Web 应用程序安全项目)。
他们的使命是什么?就是免费向全世界的“江湖侠客”(开发者、安全工程师、学生)分享最新的安全知识、工具和文档,让大家能更好地建造和保护自己的“城堡”(Web 应用),抵御“黑恶势力”(黑客)的入侵。
什么是 OWASP Top 10?
OWASP 盟会每隔几年(通常是三到四年),就会召集所有大师,分析来自全球成千上万个真实应用的真实攻击数据,然后投票评选出当前 Web 世界里最普遍、危害最大的十大安全风险。
这个评选结果,就是 OWASP Top 10。
你可以把它理解为:
- Web 安全领域的“必考重点”清单。
- 给开发者看的“最容易犯的 10 个错误”榜单。
- 安全工程师的“首要任务”列表。
学习并理解 OWASP Top 10,就等于掌握了 Web 安全的“核心内功”。
OWASP Top 10 2021 版:十大风险逐个看
相关信息
以下是截至目前最新的 2021 年版 OWASP Top 10 列表。我们将用通俗的语言来解读每一条,让你快速了解它们的含义。后续的章节将会对其中最重要的几项进行深入的、手把手的剖析。
点击展开/折叠 OWASP Top 10 2021 列表
A01:2021 - 失效的访问控制 (Broken Access Control)
- 江湖释义:权限错乱,名不副实
- 通俗解释:这是今年的“武林第一大风险”!它指的是网站没有正确地验证用户的“身份”和“权限”。
- 典型场景:
- 一个普通用户,只需要修改 URL 中的 ID (
/user/123改成/user/124),就能看到甚至修改其他用户的个人信息。 - 一个普通用户,通过直接访问一个管理员才能进入的 URL (
/admin/dashboard),就成功进入了后台管理页面。
- 一个普通用户,只需要修改 URL 中的 ID (
- 核心问题:网站只在“门口”(登录页)检查了身份,但进入“大楼”后,去每个“房间”(功能/数据)时,都没有再检查“胸牌”(权限)。
A02:2021 - 加密机制失效 (Cryptographic Failures)
- 江湖释义:密文不密,形同虚设
- 通俗解释:指网站在传输或存储敏感数据(如密码、信用卡号、个人信息)时,没有使用加密,或者使用了非常脆弱、早已被破解的加密算法。
- 典型场景:
- 用户的密码在数据库里是明文存储的,一旦数据库泄露,所有用户密码都将曝光。
- 网站还在使用 HTTP 协议,导致用户登录时,密码在网络中是明文传输的,容易被窃听。
- 使用了过时的加密算法,如 MD5 来存储密码。
A03:2021 - 注入 (Injection)
- 江湖释义:指鹿为马,借刀杀人
- 通俗解释:用户输入的数据,被程序误当作“命令”来执行了。
- 典型场景:
- SQL 注入:我们已经学过,攻击者在登录框输入 SQL 命令,骗取数据库执行,从而绕过登录或窃取数据。
- 命令注入:攻击者在输入框输入操作系统命令,骗取服务器执行,可能导致服务器被完全控制。
A04:2021 - 不安全设计 (Insecure Design)
- 江湖释义:先天不足,根基不稳
- 通俗解释:这是一个新增的、更宏观的类别。它指的是在设计和架构阶段就没有考虑安全问题,导致整个系统“天生”就存在缺陷,即使后续代码写得再好也难以弥补。
- 典型场景:
- 一个抢购系统,没有设计防刷单机制,导致一个人可以用脚本抢走所有商品。
- 密码重置功能,仅仅验证用户的邮箱地址,而没有增加手机验证码或安全问题等二次验证,容易被滥用。
A05:2021 - 安全配置错误 (Security Misconfiguration)
- 江湖释义:门户大开,不设防备
- 通俗解释:服务器、数据库、框架等各种软件,有很多默认的安全配置没有被正确地开启或加固。
- 典型场景:
- 服务器的调试模式或详细错误信息没有关闭,导致网站出错时,会暴露大量的内部代码和路径信息给攻击者。
- 云存储(如 AWS S3)的访问权限被错误地配置为“公开”,导致私密文件可以被任何人下载。
- 使用了默认的管理员账号和密码(如
admin/admin)。
A06:2021 - 使用了存在已知漏洞的组件 (Vulnerable and Outdated Components)
- 江湖释义:陈年旧疾,为人所乘
- 通俗解释:你的网站代码可能很安全,但你使用的第三方库、框架或插件(比如一个富文本编辑器、一个图片处理库)却存在已知的安全漏洞,而你没有及时更新。
- 典型场景:
- 一个著名的开源库(如 Log4j, Struts2)爆出了一个高危漏洞,所有使用了这个库且未更新的网站都成了待宰的羔羊。这是近年来大规模网络攻击的主要原因之一。
A07:2021 - 身份识别和身份验证失败 (Identification and Authentication Failures)
- 江湖释义:鱼目混珠,真假难辨
- 通俗解释:与用户登录、会话管理相关的功能存在缺陷。
- 典型场景:
- 允许用户设置“123456”这样的弱密码。
- 登录接口没有防暴力破解机制,攻击者可以无限次尝试密码。
- 用户登出后,其会话 ID(Session ID)没有失效,导致攻击者可以劫持使用。
A08:2021 - 软件和数据完整性故障 (Software and Data Integrity Failures)
- 江湖释义:偷梁换柱,以假乱真
- 通俗解释:这是一个关注软件供应链安全的类别。指的是软件在更新、数据在传输过程中,没有进行完整性校验,导致被恶意篡改。
- 典型场景:
- 你的网站从一个不安全的 HTTP 源加载了一个 JavaScript 库,这个库可能在传输途中被中间人篡改,注入恶意代码。
- 不安全的反序列化:程序接收了一段看似合法的数据,但在“解包”(反序列化)这个数据的过程中,执行了隐藏在其中的恶意代码。
A09:2021 - 安全日志记录和监控失败 (Security Logging and Monitoring Failures)
- 江湖释义:掩耳盗铃,后知后觉
- 通俗解释:网站缺乏足够的日志记录和监控。即使已经被攻击了,管理员也毫不知情,或者因为日志不足,无法追查攻击来源和修复问题。
- 典型场景:
- 有人正在对你的网站进行暴力破解,但系统没有任何告警。
- 网站被入侵后,管理员想知道黑客是怎么进来的,但发现服务器日志根本没记录关键操作。
A10:2021 - 服务器端请求伪造 (Server-Side Request Forgery - SSRF)
- 江湖释义:驱虎吞狼,借体还魂
- 通俗解释:我们刚刚详细讲过。攻击者诱骗服务器,让服务器去代表他访问一些他本无权访问的内部资源。
我们如何学习?
::: mission 我们的学习路径
看到这个列表,你可能会觉得有些 daunting(令人望而生畏)。别担心!这个列表是我们的行动指南,而不是绊脚石。
在本课程的 01-Web应用安全 章节中,我们将聚焦于其中最核心、最常见、最需要开发者亲手去解决的几个风险,包括:
- A03: 注入 (SQL 注入)
- A01: 失效的访问控制 (我们将通过 CSRF 和其他例子来理解)
- A10: SSRF
- 以及未在 Top 10 中直接体现但极其重要的 XSS(跨站脚本攻击),它与注入和完整性故障都有关联。
我们将遵循之前成功的学习模式,对每一个漏洞进行“故事化 -> 技术化 -> 实战化 -> 防御化”的深入学习。当你学完这些核心章节后,再回头看这份 Top 10 列表,你会发现自己已经掌握了其中最精华的部分,并对 Web 安全有了一个坚实而清晰的认识。
准备好了吗?让我们开始逐个击破这些 Web 世界的“大魔王”吧!
:::
