简单的注入样品

如果 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]);