在查詢資料庫時需要防止sql注入
#實作的方法:
PHP自帶了方法可以將sql語句轉義,在資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與NUL(NULL 字元)。(建議學習:PHP程式設計從入門到精通)
string addslashes ( string $str )//该函数返回一个字符串
範例
<?php $str = "Is your name O'reilly?"; // 输出: Is your name O\'reilly? echo addslashes($str); ?>
ThinkPHP自動給提供了安全防護,對於字串類型的數據,ThinkPHP都會進行escape_string處理(real_escape_string,mysql_escape_string)
要有效的防止注入問題,官方建議:
查詢條件盡量使用數組方式,這是更安全的方式;
如果不得已必須使用字串查詢條件,使用預處理機制;
使用自動驗證和自動完成機制進行針對應用的自訂過濾;
如果環境允許,盡量使用PDO方式,並使用參數綁定。
查詢條件預處理
這種方式類似於在查詢語句中放入一個佔位符,然後透過數組的形式傳入參數
例如:
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select(); $Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
以上是php如何預防sql注入的詳細內容。更多資訊請關注PHP中文網其他相關文章!