總結了關於PHP xss 和 SQL 注入的問題

來源:互聯網
上載者:User

 漏洞無非這麼幾類,XSS、sql注入、命令執行、上傳漏洞、當地套件含、遠程包含、許可權繞過、資訊泄露、cookie偽造、CSRF(跨站請求)等。這些漏洞不僅僅是針對PHP語言的,本文只是簡單介紹PHP如何有效防止這些漏洞。

  1.xss + sql注入(關於xss攻擊詳細介紹)

  其中佔大頭的自然是XSS與SQL注入,對於架構類型或者有公用檔案的,建議在公用檔案中統一做一次XSS和SQL注入的過濾。用PHP寫個過濾函數,可由如下所示:

  $_REQUEST = filter_xss($_REQUEST);

  $_GET = filter_xss($_GET);

  $_POST = filter_xss($_POST);

  $_COOKIE = filter_xss($_COOKIE);

  $_POST = filter_sql($_POST);

  $_GET = filter_sql($_GET);

  $_COOKIE = filter_sql($_COOKIE);

  $_REQUEST = filter_sql($_REQUEST);

  最簡單的filter_xss函數是htmlspecialchars()

  最簡單的filter_sql函數是mysql_real_escape_string()

  當然,誰都知道這種過濾filter_sql(詳細防止sql注入)只能過濾字元型和搜尋型的注入,對於數字型是沒有辦法的,但也說明做了這層過濾後,只需在後面注意數字型的SQL語句就可以了,遇到了加intval過濾就可以了,這就變得容易多了。

  2. 命令執行

  對於命令執行,可以從關鍵字入手,總共可分為3類

  (1) php代碼執行 :eval等

  (2)shell命令執行:exec、passthru、system、shell_exec等

  (3) 檔案處理:fwrite、fopen、mkdir等

  對於這幾類需要注意其參數是否使用者可控。

  3.上傳漏洞

  對於上傳漏洞,也是重點關注的地方,要仔細分析它的處理流程,針對上傳的繞過方式是很多的,最保險的方式:在儲存檔案是採用檔案名稱隨機命名和尾碼白名單方式。其次要注意的一點是上傳檔案的地方可能不止一處,不要有遺漏,可能會碰到這樣的情況,突然在某個目錄裡麵包含了一個第三方的編輯器在裡面。

  檔案包含漏洞涉及的函數如include() 、include_once()、require()、require_once()、file_get_contents()等

  最常見的還是出在下載檔案功能函數,例如download.php?file=../../../etc/passwd 這種類型中。

  4. 許可權繞過

  許可權繞過可分為兩類吧

  (1)後台檔案的未授權訪問。背景檔案沒有包含對session的驗證,就容易出現這樣的問題

  (2)未作使用者隔離,例如mail.php?id=23顯示了你的信件,那麼換個ID, mail.php?id=24就查看到了別人的信件,編寫代碼是方便,把信件都存在一個資料表裡,id統一編號,前端展現時只需按id取出即可,但未作使用者隔離,判定歸屬,容易造成越權訪問。

  這樣的例子是很常見的,給某銀行做評估是就經常發現這種漏洞。

  5. 資訊泄露

  資訊泄露算是比較低危的漏洞了,比如列目錄這種就屬於部署問題,而與代碼審計無關了,而像暴路徑、暴源碼這種是需要防止的。曾經遇到這樣的代碼

  

  表面上似乎沒問題,可是當請求變為 xx.php?a[]=1時,即參數變為數組的時候,就會發生錯誤以致路徑泄露,而用isset判斷則不會,當然一個個防太麻煩,建議在設定檔中關閉錯誤提示,或者在公用檔案中加入如下代碼以關閉錯誤顯示功能:

  



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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