程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> web上存漏洞及原理分析、防范方法(安全文件上存方法)

web上存漏洞及原理分析、防范方法(安全文件上存方法)

編輯:關於PHP編程

    這類漏洞,主要是可以讀取用戶傳入路徑名稱,采用不正確的過濾方法,導致惡意用戶,將文件上存到非預期的地方,帶來安全隱患。

    其實,我們抓住幾個地方即可,我們先來分析下,既然用戶要上存文件,而且文件將是多種多樣格式;可能有的文件內容與用戶傳入格式不一致,有的文件內容還夾雜木馬代碼。 那麼,我們讓用戶上存文件,跟站點文件做一個分別授權,做隔離。

    讓保存上存目錄獨立開來,目錄權限只讀不能執行
    這一步從系統設計加以授權,無論你上次什麼文件,都不可能執行到。就算我不做任何檢測,你的文件都上存到這裡了,也不會對我系統構成安全。(如果有用戶上存一些反動言語的圖片,那另外需要處理的)

    不直接使用服務器傳入值,所有都要進行檢測
    這類跟我們做一切輸入都是有害原則一樣,對於客戶端傳入的:type, name ,都要進行判斷,不直接使用。對於要生成到某個目錄,某個文件名。
    文件名最好方法是:自己寫死目錄(不要讀取傳入目錄),文件名,最好自己隨機生成,不讀取用戶文件名。文件擴展名,可以取最右邊”.”後面字符。
    以上2個方法,剛好從2個方面對上存做了整體約束。
    方法2 : 保存上存文件名,按照自己指定目錄寫入,並且文件名自己生成的。
    方法1:只要保證文件寫對了位置,然後從配置上,對寫入目錄進行權限控制,這個是治本。可以做到,你無論上存什麼文件,都讓你沒有權限跳出去可以運行。

    以 上2個方法,一起使用,可以保證文件正確存到地方,然後,權限可以控制。 這裡順便說明下, 判斷用戶上存文件是否滿足要求類型,就直接檢查文件擴展名,只要滿足擴展名就讓上存。 反正,做了執行權限限制,你不按要求上存內容,也無妨。 反正,不能執行,也不會有多大危害性的。
    正確步驟:
    1.讀取文件名,驗證擴展名是不是在范圍內
    2.自己定義生成的文件名,目錄,擴展名可以來自文件名擴展名。 其它值,都自己配置,不讀取上存中內容
    3.將文件 移到新目錄(這個目錄權限設置只讀)

    好了,以上是一般操作方法,希望對大家有幫助,也歡迎朋友們交流!也希望提供更好的方法!接下來,我會在web 開發中,常見一些方法功能安全設計方面繼續寫一些我的心得,看法!

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved