什么是 SQL 注入?
SQL注入是最古老也最危险的Web安全漏洞。2024年武汉某在线教育平台因SQL注入被窃取12万条学员信息,导致罚款20万元、品牌受损、技术负责人辞职。
常见注入类型
1. 经典注入:输入 admin' OR '1'='1 绕过密码验证
2. 盲注:通过真/假条件的页面差异推断数据
3. 时间盲注:用SLEEP()延迟判断条件真假
4. 二次注入:恶意代码存库后被读取时执行
真实案例:汉口北电商漏洞修复
我们在为武汉汉口北批发市场某电商审计时发现搜索接口存在注入漏洞。攻击者输入 ' UNION SELECT username,password FROM users -- 即可获取所有管理员账号密码。
修复方案:使用预处理语句(PHP的bind_param、Python的参数化查询、Django ORM或MyBatis),永远不要拼接SQL字符串。
全面防护方案
代码层:预处理语句+ORM框架+输入白名单过滤
架构层:最小权限原则+WAF防火墙
运维层:定期SQLMap扫描+年度渗透测试+代码审计
检测工具
SQLMap(免费)、Burp Suite Pro(399美元/年)、AWVS(免费版可用)、ModSecurity(免费开源WAF)