簡單的注入樣品

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