簡單的注入樣品
如果 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]);