SQL注入攻击(SQL Injection) 是一种常见的网络攻击方式,攻击者通过在应用程序的输入中插入恶意的 SQL 代码,欺骗数据库执行非预期的命令,从而获取、篡改或破坏数据。
很多程序会这样拼接 SQL 语句:
用户名:admin
密码:123456
程序生成的 SQL 可能是:
SELECT * FROM users
WHERE username = 'admin' AND password = '123456';
如果攻击者在密码框输入:
' OR '1'='1
最终 SQL 变成:
SELECT * FROM users
WHERE username = 'admin' AND password = '' OR '1'='1';
因为 '1'='1' 永远为真,攻击者可绕过登录验证。
' OR '1'='1' --
' UNION SELECT username, password FROM admin --
'; DROP TABLE users; --
不要拼接 SQL 字符串
❌ 错误示例:
String sql = "SELECT * FROM users WHERE name='" + name + "'";
✅ 正确示例(PreparedStatement):
String sql = "SELECT * FROM users WHERE name = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
如:
#{} 而非 ${})rootSQL注入就是“让用户输入的内容变成了SQL代码”,防御的核心是“永远不要把用户输入当代码执行”。
如果你愿意,我也可以用 真实案例 / 代码演示 / 面试题角度 再给你讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。