關於PHP的漏洞以及如何防止PHP漏洞?

WBOY
發布: 2016-07-29 08:56:07
原創
1108 人瀏覽過
漏洞無非這麼幾類,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($_GET);

$_POST = filter_ssx($_GET); filter_xss($_COOKIE);

$_POST = filter_sql($_POST);

$_GET = filter_sql($_GET);

$_COOKIE = filter_sql($_GET);

$_COOKIE = filter_sql($C_m);

最簡單的filter_xss函數是htmlspecialchars()

最簡單的filter_sql函數是mysql_real_escape_string()

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

2. 指令執行

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

(1) php程式碼執行:eval等

(2)shell指令執行:exec、passthru、system、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判斷則不會,當然一個個防太麻煩,建議在配置文件中關閉錯誤提示,或者在公共文件中加入如下程式碼以關閉錯誤顯示功能:

之前PHP點點通(phpddt.com)就有一篇文章:關於PHP防止漏洞策略 ,介紹了register_globals 的危害以及魔術引用Magic Quotes使用說明。

以上就介紹了關於PHP的漏洞以及如何防止PHP漏洞? ,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

🎜 🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板