文件上傳驗證

文件上傳的攻擊方式php

1、JS檢測繞過html

一、使用瀏覽器插件,刪除檢測文件後綴的js代碼,而後上傳文件便可繞過瀏覽器

二、先把須要上傳的文件後綴改爲容許上傳的格式,經過js校驗,抓包把後綴名改成可執行文件的後綴上傳實現繞過服務器

 

2、文件後綴繞過函數

Apache的解析順序是從右到左解析文件後綴的,若是最右側的擴展名不可識別,繼續往左判斷,直到遇到能夠解析的擴展名爲止。網站

好比:xxx.xls.xxx.xxx.xxx 由於後綴xxx不能夠解析,因此向左解析後綴,最後解析出來是一個Excel表格插件

看道哥那本書上寫的是在1.x,2.x版本下有這個解析問題,如今使用的都是6,7甚至更高版本htm

 

3、文件類型繞過圖片

若是服務器代碼是經過Content-Type的值來判斷文件的類型,那麼就存在被繞過的可能。文件上傳

Content-Type的值是客戶端傳遞的,是能夠任意修改的。

 

4、文件截斷繞過

%00表明結束符,有可能會把後邊的字符刪掉。

http://www.xxx.xom/jieshu=111

把111改成 1.php%00a.jpg,文件被保存到服務器時,%00會把「a.jpg」截斷,保存到服務器的是1.php

 

5、競爭條件攻擊

一些網站是先容許上傳任意文件,而後檢查上傳文件是否包含特殊腳本,若是有則刪除文件。這就存在上傳和檢驗的時間差問題。

能夠事先寫好 一句話,還沒校驗完成程序讀取來內容就直接給我返回。

 

6、文件內容繞過

前256個字節是合規的,在後邊加上可攻擊腳本

 

修復方案

一、文件上傳的目錄設置爲不可執行,去掉x

二、判斷文件類型,建議使用白名單的形式,對於圖片的處理可使用壓縮函數或者resize函數,處理圖片的同時破壞圖片中可能包含的html代碼

三、使用隨機數改寫文件名和文件路徑

四、單獨設置文件服務器域名(若是有條件),因爲瀏覽器的同源策略一系列客戶端攻擊將失效。

相關文章
相關標籤/搜索