請問這個PHP下防範MySQL注入攻擊的方法管用嗎?

來源:互聯網
上載者:User
關鍵字 input replace function strinput ireplace
function strinput($input)
{
$input=strval($input);
$replace=array('union','load','and','or','select','update','insert','delete','create','char','ascII','ord','conv','=','--','#','*','%','_','\\','\'',"\"");
$input=str_ireplace($replace,"0",$input);
return $input;
}

定義一個這樣的過濾函數,對所有GPC來的字串資料都先過一遍。這樣可以完全防範MySQL注入攻擊嗎?

回複內容:

這類的過濾只能給注入者增加一些麻煩,遠遠做不到完全防範。
1、注入者可以用sElEcT來代替select
2、注入者可以用sel selectect來讓你過濾一遍,嘗試獲得select
3、注入者可以用url碼來替代所有輸入
4、注入者可以。。。用很多種方法,試出你的過濾函數是什麼樣的
你和注入者的技能可以在遭受泄露的拉鋸戰中不斷獲得提升。
直到你使用了以下方法的其中之一,才開始踏上了安全的征程:
1、白名單。嚴格定義只能輸入哪些字元來查詢,其他一律不行。
2、參數化查詢。先將SQL語言編譯,再代入參數。這時候就算他提交了select * from password where table=admin也只會去查詢這一長串字元而不會執行SQL語句了。php下的樣本如李世光所說。這個函數做到完全防範MySQL注入攻擊還是比較難的,攻與防本來就是動態,要是實現一勞永逸的防守還是有難度的。

1、針對一些安全防禦,可能目前沒法繞過,但是隨著對攻擊技術的研究可能就會出現繞過方法,像dedecms、dz等的安全防禦經常被bypass。
2、根據你業務的不同,實現業務的代碼可能就提供了繞過方法。例如一個簡單的搜尋業務,可能在後面的代碼會調用urldecode解碼函數:
.....
$q = strinput($_GET['query']);
$q = urldecode($q);
$sql = "select * from table where key='".$q."'";
.....
你在urldecode前面做的所有過濾都是徒勞的

要做到盡量減少安全性漏洞不只是sql注入,需要在恰當的地方做正確的事情。這可能要瞭解一些安全知識,像《白帽子講web安全》,《web前端駭客》都是web安全不錯的書籍。

php安全的線上文檔(e文):Survive The Deep End: PHP Security 關於mysql防護其實很簡單。
1.使用PDO::prepare PDO::bindParam來過濾輸入參數
2.將HTML轉成實體 htmlspecialchars用PHP的PDO擴充去使用資料庫,該擴充封裝的類和方法已經考慮了防注入。用PHP的安全函數在query的時候把變數轉義一下就可以了。建議使用參數化查詢或白名單。
黑名單幾乎在任何時候都是不可取的。請使用pdo不要自作聰明地過濾,總會有遺漏的地方的,你過濾不完的。
請用pdo + 參數綁定,一勞永逸,一了百了。你要注意到,這樣子很有可能過濾使用者的合法輸入。
過濾sql注入的方法常見的有如下兩種:
1 mysql_real_escape_string
2 pdo的prepare+bind

另,網站安全性不止是sql注入一方面,還要考慮到csrf和xss等。字串過濾:
1>mysql_real_escape_string
2>PDO::prepare
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.