-1
所以我正在使用PDO來試圖防止SQL注入。PDO我什麼時候需要參數化我的查詢?
我的問題是我應該使用它之前檢查/驗證我的數據庫信息?
例如:
$stmt = $pdo -> prepare(SELECT userID FROM user, comment WHERE userNumber ='1' AND user.userName = comment.UserName");
我覺得我已經是選項:
1)我驗證所有輸入之前,我將它插入我的數據庫,所以我沒有檢查是否user.userName是可以注入代碼的字符串。
2)我應該參數化我從數據庫中獲得的數據。還不確定,但類似:
$stmt->bindValue(':comment.UserName', comment.UserName, PDO::PARAM_STR);
3)驗證並仍然參數化。在飛行
只是爲了確保所有條款。選擇,在哪裏,等等,因爲在任何時候,一個「好」類型的字符串可以在整個查詢中注入代碼?這會使代碼變大嗎? – Juan 2012-07-30 16:14:59
考慮一個查詢序列,您可以從一個表中獲取某個人的姓名,然後在其他查詢中使用該查詢序列。如果那個人是「Miles O'Brien」,那麼你現在會在其他查詢中注入一個引號並將其打破。直到小[Bobby Tables](http://bobby-tables.com)註冊您的系統纔會結束。使用參數,這個問題就會消失,不管數據內有多少可注入的東西。 – 2012-07-30 16:16:14