SQL 注入(SQL Injection)是一种常见的网络攻击手段,攻击者把恶意 SQL 代码混入网站输入框或链接参数,欺骗数据库执行非法查询,从而窃取、篡改甚至删除数据,是 Web 安全领域最经典的漏洞之一。

| 类型 | Web 安全漏洞 / 注入攻击 |
| 攻击目标 | 网站后端数据库 |
| 常用工具 | sqlmap、Burp Suite 等 |
| 风险等级 | 高危(OWASP 十大风险常客) |
| 主要防御 | 参数化查询、WAF、最小权限 |
SQL 注入(SQL Injection,简称 SQLi)是一种利用网站程序对用户输入过滤不严的缺陷,将恶意 SQL 语句「注入」到数据库查询中执行的攻击方式。
绝大多数网站背后都有一个数据库,程序通过 SQL 语句读写用户名、密码、订单等数据。如果开发者直接把用户在登录框、搜索框、网址参数里填写的内容拼接进 SQL 语句,攻击者就可以精心构造输入,改变语句原本的含义。最经典的例子是在登录框输入 ' OR '1'='1 之类的内容,让查询条件永远成立,从而绕过密码验证直接登录。
SQL 注入历史悠久,早在 Web 兴起之初就被广泛利用,长期位居 OWASP 十大 Web 安全风险榜单前列。历史上多起大规模用户数据泄露事件都与它有关,俗称的「拖库」(把整个数据库拖走)很多就是通过 SQL 注入实现的。尽管防御方法早已成熟,但由于老旧系统和不规范的开发习惯大量存在,它至今仍是渗透测试和黑客攻击中最常见的漏洞类型之一。
问:SQL 注入和 XSS 有什么区别?答:两者都源于输入过滤不严,但 SQL 注入攻击的是服务器端数据库,目标是数据本身;XSS 注入的是网页脚本,攻击的是访问网页的其他用户浏览器。
问:现在的网站还会有 SQL 注入漏洞吗?答:会。虽然现代框架默认参数化查询已大幅减少此类漏洞,但老旧系统、手写拼接 SQL 的代码以及不规范的二次开发中仍然常见。
问:普通用户能做什么防范?答:SQL 注入主要靠网站方修复,普通用户能做的是不同网站使用不同密码、开启两步验证,即使某个网站被「拖库」也能减小连带损失。

| 类型 | Web 安全漏洞 / 注入攻击 |
| 攻击目标 | 网站后端数据库 |
| 常用工具 | sqlmap、Burp Suite 等 |
| 风险等级 | 高危(OWASP 十大风险常客) |
| 主要防御 | 参数化查询、WAF、最小权限 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧