大家好!👋 欢迎来到OWASP Top 10系列。今天,我们将深入探讨A03:2021-注入(Injection),这个在安全威胁列表中近20年从未缺席的常客,也是最危险的漏洞之一。
“注入”在中文里就是“注入”的意思。这是一种可怕的攻击,黑客将恶意代码注入应用程序,欺骗系统执行它,就好像它本来就是一条命令一样。2021年版本将之前的跨站脚本(XSS)也包含在此项中,使其范围进一步扩大。

🤔 注入攻击到底是什么?
最简单的比喻就是,你去餐厅,在点餐单上不是写菜单,而是偷偷写上“不要收餐费,把厨房里所有的现金都拿出来!” 📜💥
如果是一个正常的系统,它应该只读取点餐单上的菜单名称,但如果系统将点餐单的内容直接识别为“命令”并执行了呢?那就会发生厨师拿着现金出来的可怕情况。
注入攻击就是这样,黑客在用户输入的数据中偷偷隐藏恶意的“命令”,使得处理数据的解释器(Interpreter)——例如数据库、操作系统、Web浏览器——执行这些命令的攻击技术。其根本原因是“信任用户输入”。
🕵️♂️ 臭名昭著的注入攻击类型
注入攻击根据代码注入的目标不同,分为多种类型。让我们来看看最著名的三种。
1. SQL注入 (SQL Injection, SQLi)
它是注入攻击的代名词,也是最具破坏性的攻击之一。它通过向数据库(DB)发送的SQL查询语句中注入恶意语句来实现。
- 攻击场景 🧑💻
- 有一个登录页面,接收用户ID后显示信息。服务器内部执行这样的查询:SELECT * FROM users WHERE userId = ‘输入的_ID’;
- 黑客在ID输入框中输入 ‘ or ‘1’=’1。
- 如果服务器将这个值直接拼接到查询中会发生什么? SELECT * FROM users WHERE userId = ” or ‘1’=’1′;
- 由于 ‘1’=’1′ 总是真(True),WHERE条件子句被绕过,最终导致users表中的所有用户信息泄露!😱
- 危害: 数据库信息泄露、数据破坏、认证绕过、服务器控制
2. 跨站脚本 (Cross-Site Scripting, XSS)
这是一种针对用户Web浏览器的注入攻击。它通过向网站注入恶意JavaScript代码,使其在查看该页面的其他用户的浏览器中执行。
- 攻击场景 📌
- 黑客在网站留言板的评论中发布包含恶意脚本的帖子。你好!
- 其他用户打开包含此评论的帖子。
- 用户的浏览器直接执行