PHP實現防sql注入


在查詢數據庫時需要防止sql注入

實現的方法:

PHP自帶了方法可以將sql語句轉義,在數據庫查詢語句等的需要在某些字符前加上了反斜線。這些字符是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字符)。

string addslashes ( string $str )

該函數返回一個字符串

范例

Example #1 一個 addslashes() 例子

<?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)
 
要有效的防止SQL注入問題,官方建議:
  • 查詢條件盡量使用數組方式,這是更為安全的方式;
  • 如果不得已必須使用字符串查詢條件,使用預處理機制;
  • 使用自動驗證和自動完成機制進行針對應用的自定義過濾;
  • 如果環境允許,盡量使用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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM