php防sql注入
阿新 • • 發佈:2020-07-21
原始沒有防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"));
親手測試了一下,加深印象.