淺談web上存漏洞及原理分析、防范方法(安全文件上存方法)
這類漏洞,主要是可以讀取用戶傳入路徑名稱,采用不正確的過濾方法,導(dǎo)致惡意用戶,將文件上存到非預(yù)期的地方,帶來安全隱患。
其實,我們抓住幾個地方即可,我們先來分析下,既然用戶要上存文件,而且文件將是多種多樣格式;可能有的文件內(nèi)容與用戶傳入格式不一致,有的文件內(nèi)容還夾雜木馬代碼。 那么,我們讓用戶上存文件,跟站點文件做一個分別授權(quán),做隔離。
不直接使用服務(wù)器傳入值,所有都要進行檢測
這類跟我們做一切輸入都是有害原則一樣,對于客戶端傳入的:type, name ,都要進行判斷,不直接使用。對于要生成到某個目錄,某個文件名。
文件名最好方法是:自己寫死目錄(不要讀取傳入目錄),文件名,最好自己隨機生成,不讀取用戶文件名。文件擴展名,可以取最右邊”.”后面字符。
以上2個方法,剛好從2個方面對上存做了整體約束。
方法2 : 保存上存文件名,按照自己指定目錄寫入,并且文件名自己生成的。
方法1:只要保證文件寫對了位置,然后從配置上,對寫入目錄進行權(quán)限控制,這個是治本??梢宰龅?,你無論上存什么文件,都讓你沒有權(quán)限跳出去可以運行。
以上2個方法,一起使用,可以保證文件正確存到地方,然后,權(quán)限可以控制。 這里順便說明下, 判斷用戶上存文件是否滿足要求類型,就直接檢查文件擴展名,只要滿足擴展名就讓上存。 反正,做了執(zhí)行權(quán)限限制,你不按要求上存內(nèi)容,也無妨。 反正,不能執(zhí)行,也不會有多大危害性的。
正確步驟:
1.讀取文件名,驗證擴展名是不是在范圍內(nèi)
2.自己定義生成的文件名,目錄,擴展名可以來自文件名擴展名。 其它值,都自己配置,不讀取上存中內(nèi)容
3.將文件 移到新目錄(這個目錄權(quán)限設(shè)置只讀)
相關(guān)文章
解決laravel 出現(xiàn)ajax請求419(unknown status)的問題
今天小編就為大家分享一篇解決laravel 出現(xiàn)ajax請求419(unknown status)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09PHP中利用sleep函數(shù)實現(xiàn)定時執(zhí)行功能實現(xiàn)代碼
在PHP中,有一個sleep函數(shù),大概意思是程序執(zhí)行遇到sleep函數(shù)時暫停N秒后繼續(xù)往下執(zhí)行。如sleep(10)意思就是程序自上往下執(zhí)行,遇到sleep(10)語句后暫停十秒,然后繼續(xù)往下執(zhí)行2016-08-08phpStudy中升級MySQL版本到5.7.17的方法步驟
這篇文章主要給大家介紹了關(guān)于phpStudy中升級MySQL版本到5.7.17的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-08-08PHP實現(xiàn)求連續(xù)子數(shù)組最大和問題2種解決方法
這篇文章主要介紹了PHP實現(xiàn)求連續(xù)子數(shù)組最大和問題2種解決方法,涉及php針對數(shù)組的遍歷、判斷、運算等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12