天天看點

PHP中的SQL注入和防禦

什麼是SQL注入 ?

程式員在編寫代碼的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隐患。

攻擊者可以送出一段精心構造的資料庫查詢代碼,根據傳回的結果,獲得某些他想得知的資料,這就是所謂的SQL Injection,即SQL注入。

受影響的系統:對輸入的參數不進行檢查和過濾的系統。

來看下我自己編寫的PHP一個登入的界面 完全沒有過濾的

PHP中的SQL注入和防禦

看這段代碼對使用者輸入的資料完全沒有過濾 就直接進入資料庫查詢了

PHP中的SQL注入和防禦

這裡密碼是随意輸入的 就直接繞過了限制

PHP中的SQL注入和防禦

登入成功

這句代碼在資料庫裡面是這樣的

PHP中的SQL注入和防禦

就直接查詢出來了所有的資料 因為or 1=1永遠是真,是以條件會成立。就會輸出所有的資料

防禦方法的話我是直接過濾的 不廢話看代碼!

PHP中的SQL注入和防禦

用了這幾個函數來過濾,addslashes是過濾字元串特殊符号知之前加了一個反斜杠 

這樣的話 我剛才那樣構造payload不能成功了

mysql_real_escape_string是對字元串中的'"\ \r \n 字元進行轉義

我也不知道這樣函數的用法對不對.請大家有啥意見多多指出.

小弟第一次寫文章,大佬們多多指教.

PHP中的SQL注入和防禦

繼續閱讀