我試圖儘可能地過濾出來以防止討厭的SQL注入,這裏是我的代碼示例,有什麼我失蹤?我錯過了什麼? SQL注入
$name = htmlspecialchars($row['name']);
echo '<div class="col-sm-7">'.$name.'</div>';
在我的HTML代碼^
if($_POST["name"]) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'])) {
die ("Invalid characters.");
}
$name = mysqli_real_escape_string($conn, trim($_POST['name']));
,所以我的代碼包括以上這些,有什麼我丟失,可以進一步防止?
一個問題
所以我必須過濾掉我自己的定義,因爲這個數據是不是從我的形式來?例如
$currentdate = mysqli_real_escape_string($conn, trim(date("Y-m-d h:i:sa")));
然後使用具有替代參數的準備好的陳述 – RiggsFolly
您不必過濾掉任何「無效字符」,這沒有任何意義。使用轉義(就像你已經做過的那樣),或者甚至更好地使用「準備好的語句」和「參數綁定」。 – arkascha
並查看[手冊]中的filter_'函數集(http://php.net/manual/en/book.filter.php) – RiggsFolly