经典 OR 1=1 攻击要点
- 正常:WHERE username='alice' AND password='secret'
- 攻击输入:' OR '1'='1'; -- 让条件恒真
- 拼出来后 OR 后面恒真,整条 WHERE 直接放行
- 注释符 -- 把后面的密码判断吃掉,保证语法不报错
- 结果:返回全部用户,相当于绕过登录校验
- 仅靠拼接的字符串,无法分辨'数据'与'指令'
经典 OR 1=1 攻击示例
-- 正常登录查询
SELECT * FROM users
WHERE username = 'alice' AND password = 'secret';
-- 攻击者输入用户名:' OR '1'='1'; --
-- 拼出来变成(注释吃掉了后面的密码条件)
SELECT * FROM users
WHERE username = '' OR '1'='1'; -- ' AND password = 'secret';
避坑提醒:看到 ' OR '1'='1 这样的输入,说明有人在探注入点;生产环境日志里出现要立刻警觉并核对入口过滤。