PHP中防止SQL註入
阿新 • • 發佈:2018-04-09
string 直接 mysqli select 自定義 pan conn php sele
防止SQL註入,我們需要註意以下幾個要點:
- 1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和 雙"-"進行轉換等。
- 2.永遠不要使用動態拼裝sql,可以使用參數化的sql或者直接使用存儲過程進行數據查詢存取。
- 3.永遠不要使用管理員權限的數據庫連接,為每個應用使用單獨的權限有限的數據庫連接。
- 4.不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
- 5.應用的異常信息應該給出盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝
到底我們能做什麽去防止sql註入呢?
1、通過使用預編譯語句(prepared statements)
使用PDO對象(對於任何數據庫驅動都好用)
$stmt = $pdo->prepare(‘SELECT * FROM employees WHERE name = :name‘);
$stmt->execute(array(‘name‘ => $name));
foreach ($stmt as $row) {
// do something with $row
}
2、參數化查詢(parameterized queries)
使用MySqli
$stmt = $dbConnection->prepare(‘SELECT * FROM employees WHERE name = ?‘);
$stmt->bind_param(‘s‘, $name);
$stmt->execute();
PHP中防止SQL註入