1. 程式人生 > 實用技巧 >php防sql注入

php防sql注入

原始沒有防sql注入操作:

public function sql_export(Request $request){
        $username = $request -> get("username");
        $password = $request -> get("password");

        $data = Db::table("userinfo")
            -> where("username = '{$username}' and password = '{$password}'")
            -> select();
        var_dump(Db::table("userinfo") -> getLastSql());die();
    }

  這樣使用postman呼叫輸入引數是:?username=xx&password=1' or password != ""' 結果是:,這個sql的條件都不正確卻能夠查詢出結果,這無疑是危險的漏洞.

tp5框架防sql操作配置:

tp5.1的app.php中的default_filter配置改為:

'default_filter'         => 'trim,strip_tags,addslashes,htmlspecialchars',
再次呼叫結果:

,現在查詢結果為空,獲取不到結果集了.
如果不在配置檔案裡修改配置,也可以在程式碼裡用addslashes方法對接收到的引數進行處理,結果是一樣的.
$username = addslashes($request -> get("username"));
$password = addslashes($request -> get("password"));

  親手測試了一下,加深印象.