### 堆叠注入漏洞原理

**正常查询**

假设一个网站的查询语句是这样拼接的：

```sql
SELECT * FROM users WHERE id = '用户输入';
```

如果用户输入 `1`，执行的 SQL 语句就是：

```sql
SELECT * FROM users WHERE id = '1';
```

**堆叠注入攻击**

如果攻击者在输入框中输入 `1; DROP TABLE users`，并且后端没有过滤分号，最终执行的 SQL 语句就会变成：

```sql
SELECT * FROM users WHERE id = '1';
DROP TABLE users;
```

数据库服务器会按顺序执行这两条语句。第一条是正常的查询，第二条则是**删除 `users` 表**的恶意命令