PHP+Mysql SQL注入防止方法

5611 ワード

この文章はPHP+Mysql SQL注入防止の方法について紹介しています。一定の参考価値があります。今共有します。必要な友達がいたら参考にしてください。
 
方法1:
mysqlリアル.エスケープstring-SQL文で使用される文字列の特殊文字を意味し、接続されている現在の文字セットを考慮します。
$sql = "select count(*) as ctr from users where username

='".mysql_real_escape_string($username)."' and

password='". mysql_real_escape_string($pw)."' limit 1";
 
方法二:
magic_を開くquot tesgpcはSQL注入を防止する。php.iniにはmagic_という設定があります。quot tesgpc=Offというデフォルトはクローズされていますが、開いたら自動的にsqlのクエリに対して変換を行うためにユーザーを提出します。例えば'を\'に変更するなど、sql注射を防ぐために重要な役割があります。
magic_ならquot tesgpc=Offは、addslashes()関数を使います。
方法三:
ユーザー定義関数
/**

*   sql        

* author: xiaochuan

* @param: mixed $value    

*/ 

function check_param($value=null) { 

        #  select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile

    $str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile';

  

    if(!$value) {

  

        exit(''); 

  

    }elseif(eregi($str, $value)) { 

  

        exit('');

  

    }

  

    return true; 

} 

   

  

  

  

  

  

  

/**

*   sql        

* author: xiaochuan

* @param: mixed $value    

*/

function str_check( $value ) { 

  

    if(!get_magic_quotes_gpc()) { 

  

        //      

        $value = addslashes($value); 

  

    } 

  

    $value = str_replace("_", "\_", $value); 

  

    $value = str_replace("%", "\%", $value); 

       

   return $value; 

} 

   

  

  

  

  

  

/**

*   sql        

* author: xiaochuan

* @param: mixed $value    

*/

function post_check($value) { 

  

    if(!get_magic_quotes_gpc()) {

  

        //       

        $value = addslashes($value);

  

    } 

  

    $value = str_replace("_", "\_", $value); 

  

    $value = str_replace("%", "\%", $value); 

  

    $value = nl2br($value); 

  

    $value = htmlspecialchars($value); 

  

    return $value; 

}
 
以上がPHP+Mysql SQL注入防止方法の詳細です。
PHPに関する知識をもっと知りたいです。私のコラムPHP zhuan.zhihu.comに注目してください。