简单的注入样品
如果 SQL 语句的构造如下:
SQL = "SELECT * FROM Users WHERE username = '" + user + "' AND password ='" + pw + "'";
db.execute(SQL);
然后黑客可以通过提供像 pw' or '1'='1
这样的密码来检索你的数据; 生成的 SQL 语句将是:
SELECT * FROM Users WHERE username = 'somebody' AND password ='pw' or '1'='1'
这个将通过 Users
表中所有行的密码检查,因为'1'='1'
始终为 true。
要防止这种情况,请使用 SQL 参数:
SQL = "SELECT * FROM Users WHERE username = ? AND password = ?";
db.execute(SQL, [user, pw]);