PHP防止sql注入

如果沒有防止sql注入,那麼你的網站一些重要信息就會被一些人輕易用特殊的字符登錄而盜竊。

比如:
登錄時的查詢語句爲:select *from 表名 where username=’用戶名’ and password ‘密碼’;

當用戶輸入用戶名爲 ‘or 1 or’ ,密碼不輸入,此時的查詢語句爲: select *from 表名 where username=”or 1 or” and password=”; 可見此時條件where語句username=” or 1返回true,true or password=”其實始終爲true,所以此時條件where語句始終爲true,即使不輸入密碼也會登錄成功。

由此可見,防止sql注入是一件十分必要的事情。

PHP中防止sql注入有多種方法,我分享我習慣用的三種:

  1. 利用PHP的 addslashes (需要轉義的字符串),addslashes可轉義單引號,雙引號, 反斜槓,NULL字符

        $ad_username=addslashes($username);
        $ad_password=addslashes($password);
        $sql="select *from 表名 where username='{$ad_username}' and password='{$ad_password}'";
  2. 利用mysql提供的mysql_real_escape_string(待轉換字符串,數據庫連接資源)

  3. 自己寫一個方法

    /**
    * 批量轉義
    * @param data 需要轉義的字符串或者數組
    * /
    function deepslashes($data){
    if(empty($data)){
        return $data;
    }
    return is_array($data)?$array_map('deepslashes',$data):addslashes($data);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章