|
其實(shí),我們抓住幾個(gè)地方即可,我們先來(lái)分析下,既然用戶要上存文件,而且文件將是多種多樣格式;可能有的文件內(nèi)容與用戶傳入格式不一致,有的文件內(nèi)容還夾雜木馬代碼。 那么,我們讓用戶上存文件,跟站點(diǎn)文件做一個(gè)分別授權(quán),做隔離。
讓保存上存目錄獨(dú)立開來(lái),目錄權(quán)限只讀不能執(zhí)行
這一步從系統(tǒng)設(shè)計(jì)加以授權(quán),無(wú)論你上次什么文件,都不可能執(zhí)行到。就算我不做任何檢測(cè),你的文件都上存到這里了,也不會(huì)對(duì)我系統(tǒng)構(gòu)成安全。(如果有用戶上存一些反動(dòng)言語(yǔ)的圖片,那另外需要處理的)
不直接使用服務(wù)器傳入值,所有都要進(jìn)行檢測(cè)
這類跟我們做一切輸入都是有害原則一樣,對(duì)于客戶端傳入的:type, name ,都要進(jìn)行判斷,不直接使用。對(duì)于要生成到某個(gè)目錄,某個(gè)文件名。
文件名最好方法是:自己寫死目錄(不要讀取傳入目錄),文件名,最好自己隨機(jī)生成,不讀取用戶文件名。文件擴(kuò)展名,可以取最右邊”.”后面字符。
以上2個(gè)方法,剛好從2個(gè)方面對(duì)上存做了整體約束。
方法2 : 保存上存文件名,按照自己指定目錄寫入,并且文件名自己生成的。
方法1:只要保證文件寫對(duì)了位置,然后從配置上,對(duì)寫入目錄進(jìn)行權(quán)限控制,這個(gè)是治本。可以做到,你無(wú)論上存什么文件,都讓你沒有權(quán)限跳出去可以運(yùn)行。
以上2個(gè)方法,一起使用,可以保證文件正確存到地方,然后,權(quán)限可以控制。 這里順便說(shuō)明下, 判斷用戶上存文件是否滿足要求類型,就直接檢查文件擴(kuò)展名,只要滿足擴(kuò)展名就讓上存。 反正,做了執(zhí)行權(quán)限限制,你不按要求上存內(nèi)容,也無(wú)妨。 反正,不能執(zhí)行,也不會(huì)有多大危害性的。
正確步驟:
1.讀取文件名,驗(yàn)證擴(kuò)展名是不是在范圍內(nèi)
2.自己定義生成的文件名,目錄,擴(kuò)展名可以來(lái)自文件名擴(kuò)展名。 其它值,都自己配置,不讀取上存中內(nèi)容
3.將文件 移到新目錄(這個(gè)目錄權(quán)限設(shè)置只讀)
好了,以上是一般操作方法,希望對(duì)大家有幫助,也歡迎朋友們交流!也希望提供更好的方法!接下來(lái),我會(huì)在web 開發(fā)中,常見一些方法功能安全設(shè)計(jì)方面繼續(xù)寫一些我的心得,看法!
php技術(shù):淺談web上存漏洞及原理分析、防范方法(安全文件上存方法),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。