首頁 >後端開發 >PHP問題 >php如何預防sql注入

php如何預防sql注入

(*-*)浩
(*-*)浩原創
2019-09-19 11:06:374945瀏覽

在查詢資料庫時需要防止sql注入

php如何預防sql注入

#實作的方法:

PHP自帶了方法可以將sql語句轉義,在資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與NUL(NULL 字元)。(建議學習:PHP程式設計從入門到精通

string addslashes ( string $str )//该函数返回一个字符串

範例

<?php
$str = "Is your name O&#39;reilly?";

// 输出: Is your name O\&#39;reilly?
echo addslashes($str);
?>

ThinkPHP自動給提供了安全防護,對於字串類型的數據,ThinkPHP都​​會進行escape_string處理(real_escape_string,mysql_escape_string)

要有效的防止注入問題,官方建議:

查詢條件盡量使用數組方式,這是更安全的方式;

如果不得已必須使用字串查詢條件,使用預處理機制;

使用自動驗證和自動完成機制進行針對應用的自訂過濾;

如果環境允許,盡量使用PDO方式,並使用參數綁定。 

查詢條件預處理

這種方式類似於在查詢語句中放入一個佔位符,然後透過數組的形式傳入參數

例如:

$Model->where("id=%d and username=&#39;%s&#39; and xx=&#39;%f&#39;",array($id,$username,$xx))->select();

$Model->where("id=%d and username=&#39;%s&#39; and xx=&#39;%f&#39;",$id,$username,$xx)->select();

以上是php如何預防sql注入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn