几张图带你了解SQL 注入
2026/5/30 22:11:13 网站建设 项目流程

我终于明白 SQL 注入为什么会出现了

最近在学习 Web 安全。

按照学习路线,学完文件上传和文件包含之后,终于开始接触大家经常提到的:

SQL 注入(SQL Injection)。

说实话,在没学之前,我一直觉得 SQL 注入很神秘。

网上经常能看到各种专业术语:

  • 联合查询
  • 报错注入
  • 布尔盲注
  • 时间盲注

看得人头都大了。

后来真正开始学习后,我发现:SQL 注入最核心的东西其实一点都不复杂。

甚至可以用一句话概括:用户输入的数据,改变了数据库原本想执行的语句。

今天就记录一下我最近学习 SQL 注入时的理解。

一、学 SQL 注入之前,先要知道数据库是什么

以前我一直以为网站的数据都存在网页里面,后来才知道。

真正的数据其实都在数据库里

比如一个登录系统。

数据库里可能有这样一张表:

idusernamepassword
1admin123456
2testabc123

这张表通常叫:users

里面存放:

  • 用户名
  • 密码
  • 用户信息

当我们登录网站的时候,网站其实是在数据库里查询:

SELECT * FROM users;

简单理解就是:把 users 表里的数据找出来。

二、什么是 SQL?

SQL 的全称是:Structured Query Language

中文一般叫:结构化查询语言。

它是数据库沟通的语言。

比如:

查询用户:SELECT * FROM users;

查询管理员:SELECT * FROM users WHERE username='admin';

删除数据:DELETE FROM users;

修改数据:UPDATE users SET password='123456';

学习到这里的时候。

我突然意识到:数据库其实就像一个大型仓库,而 SQL 就是操作仓库的指令。

三、SQL 注入为什么会产生?

这里也是我最近最大的收获。

假设有一个登录功能。

用户输入:

  • 用户名
  • 密码

服务器收到后可能会生成类似这样的查询:

SELECT * FROM users
WHERE username='admin'
AND password='123456';

本意很简单。

就是验证账号密码是否正确。

问题在于:用户名和密码来自用户输入。

如果开发者直接把用户输入拼接到 SQL 语句中。

那么用户输入就有可能影响整个 SQL 结构

这也是SQL 注入出现的根本原因

四、我发现 SQL 注入和 XSS 很像

学到这里的时候,我突然想到之前学的 XSS。

XSS 的本质是:用户输入影响浏览器执行逻辑。

而 SQL 注入的本质是:用户输入影响数据库执行逻辑。

两者其实有一个共同点:

以前总觉得漏洞之间毫无关系。

现在越来越发现,很多漏洞背后其实是同一种思路。

五、为什么开发者会中招?

因为很多时候。

开发者认为:用户应该正常输入内容

例如:

用户名:admin

密码:123456

但现实情况是。

服务器永远不能假设用户一定会正常输入。

因为用户输入的内容:

  • 可以是数字
  • 可以是符号
  • 可以是特殊字符
  • 也可能是完全超出预期的数据

如果程序没有做好处理。

风险就出现了。

六、学习 SQL 注入后,我对网站运行有了新的理解

以前学习 Web 安全,总感觉是在背漏洞。

今天学 XSS。

明天学文件上传。

后天学 SQL 注入。

学着学着容易混乱。

但现在慢慢发现,这些漏洞背后其实都在说明同一件事:服务器需要处理用户输入。

而安全问题往往出现在:服务器错误地相信了用户输入。

这也是我最近最大的认知变化。

七、为什么不要急着背各种注入技巧

刚开始学的时候。

我也想直接去看:

  • 联合查询
  • 报错注入
  • 时间盲注

后来发现,如果连数据库是什么都没理解,那些内容基本都是死记硬背。

真正重要的是先搞懂:

  • 数据库如何存储数据
  • SQL 如何查询数据
  • 用户输入如何进入 SQL 语句

把这些理解清楚之后。

后面的各种注入类型其实只是不同场景下的表现形式。

八、最后

以前我一直以为 SQL 注入是一个非常复杂的漏洞,真正开始学习之后才发现。

它最核心的问题其实很简单:服务器把用户输入当成了可信数据,而用户输入又参与了 SQL 语句的构造,最终导致数据库执行了开发者原本没打算执行的逻辑。

所以现阶段对我来说,比起记各种技巧更重要的是先理解:数据库到底是怎么工作的。

因为只有理解原理,后面学习 SQL 注入的时候才不会变成机械背诵。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询