999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

防范隱藏在文件上傳中的威脅

2019-12-24 23:21:47河南許紅軍
網(wǎng)絡(luò)安全和信息化 2019年6期
關(guān)鍵詞:用戶檢測(cè)信息

■ 河南 許紅軍

編者按: 對(duì)于很多網(wǎng)站來說,都提供了文件上傳功能,允許用戶上傳圖片等文件,實(shí)現(xiàn)和其他人的互動(dòng)。但是,這一功能也成了黑客等不法之徒覬覦的目標(biāo)。黑客往往利用目標(biāo)網(wǎng)站存在的各種漏洞來上傳各種非法文件,進(jìn)而對(duì)網(wǎng)站進(jìn)行滲透攻擊。在很多實(shí)際的案例中,都可以看到正是因?yàn)榇嬖谏蟼髀┒?,黑客才可以很輕松的發(fā)起攻擊,因此,對(duì)文件上傳進(jìn)行嚴(yán)格的管控,對(duì)于提高網(wǎng)站的安全性是極為重要的。

和文件上傳相關(guān)的安全威脅

和文件上傳相關(guān)的安全威脅包括以下類型,例如針對(duì)文件上傳的DoS攻擊,就是利用文件上傳功能,上傳大量的文件,來極大的占用服務(wù)器

的存儲(chǔ)和帶寬資源。黑客還會(huì)利用特殊方法,將非法文件(例如腳本等)傳輸上去,之后在服務(wù)器上運(yùn)行惡意腳本。當(dāng)然,黑客還可以將惡意文件上傳到服務(wù)器上,之后通過各種方法誘導(dǎo)用戶下載,當(dāng)用戶下載后,黑客就可以利用跨站腳本攻擊等方法,來對(duì)網(wǎng)站進(jìn)行滲透。

防御惡意上傳行為

對(duì)于第一種攻擊類型來說,黑客會(huì)使用Web應(yīng)用的上傳功能,連續(xù)發(fā)送體積巨大的文件,這就會(huì)導(dǎo)致目標(biāo)網(wǎng)站負(fù)荷過載,從而形成拒絕服務(wù)。

應(yīng)對(duì)這種攻擊方式,可以采用各種方式加以化解。例如對(duì)于PHP類型的網(wǎng)站來說,可以在“php.ini”文件中設(shè)置允許上傳的最大容量,執(zhí)行“vim /etc/php.ini” 命令,在其中的“file_uploads=”的值設(shè)置為“Off”,就會(huì)取消上傳功能。

在“u p l o a d_m a x_filesize =”欄中設(shè)置單個(gè)文件的最大上傳容量(例如“100K”), 在“max_file_uploads =”欄中設(shè)置單次請(qǐng)求最大文件上傳數(shù)量,在“post_max_size =”欄中設(shè)置POST請(qǐng)求正文的最大限制,一般來說上傳文件使用的都是POST方法來實(shí)現(xiàn)的。在“memory_limit =”欄 中設(shè)置腳本所能申請(qǐng)到的最大內(nèi)存值。

當(dāng) 然,利 用Apache的“httpd.conf”文件,也可以限制請(qǐng)求正文的最大字節(jié)數(shù),通過前期的檢查可以將不合法的請(qǐng)求拒絕掉,繼而可以有效提高防御DoS的能力。

執(zhí)行“vim /etc/httpd/conf/https.conf” 命 令,在 對(duì) 應(yīng) 的“” 欄中取消“LimitRequestBody 102400”行前面的“#”號(hào),將該行配置激活,其中的“xxx”為具體的Web路徑。執(zhí)行“systemcrl restart httpd”命令,重啟Apache。

這樣,在執(zhí)行上傳操作時(shí),文件大量就不能超過預(yù)設(shè)值(默認(rèn)為100KB)。

嚴(yán)格審核上傳的文件

對(duì)于非法上傳惡意腳本來說,其正是利用了服務(wù)器端配置上的某些漏洞來實(shí)現(xiàn)的。

因?yàn)閷?duì)于有些文件上傳的處理方式來說,會(huì)將用戶上傳的文件保存到Web服務(wù)器的公開目錄中。如果應(yīng)用中允許上傳的文件擴(kuò)展名為php、asp、aspx、jsp等腳本文件,黑客就可以將上傳的文件作為腳本在服務(wù)器上運(yùn)行。

這樣,黑客就可以執(zhí)行瀏覽,修改和刪除Web服務(wù)器上的文件,甚至以此為跳板來攻擊其他的服務(wù)器。

應(yīng)對(duì)的方法是禁止將上傳的文件保存到公開的目錄中,防止用戶直接查看到具體的訪問鏈接,而應(yīng)該將其保存到比較隱藏的目錄中,當(dāng)上傳之后,禁止顯示具體的鏈接地址,即必須通過特定的腳本才可以訪問上傳的文件,總之禁止在服務(wù)器上直接執(zhí)行上傳的文件。

還可以將文件的擴(kuò)展名設(shè)置為不可執(zhí)行的腳本文件,即禁止上傳腳本類型的文件,當(dāng)然這只是輔助性質(zhì)的,因?yàn)橄拗莆募U(kuò)展名是很可能存在疏漏的。

最關(guān)鍵的是不能將上傳文件保存在公開目錄中,因?yàn)樵诠_目錄中是可以執(zhí)行腳本的。

例如在設(shè)計(jì)網(wǎng)站程序時(shí),需要針對(duì)上傳的文件進(jìn)行嚴(yán)格的檢測(cè)。例如在PHP網(wǎng)站中,可以定義一個(gè)名為專門的函數(shù)對(duì)此進(jìn)行檢測(cè),例如輸入諸如“define('UPLOADPATH', '/var/upload')”之類的語句,定義上傳路徑,注意其不能為公開目錄。

輸入:

“function check_upfile($scfile) {”

“$i n f o=p a t h i n f o($scfile);”

“?$ext= strtolower($info['extension'])”

“if ($exe != 'png'&&$exe != 'jpg' &&$exe !='bmp' ) {”

“die ('只能上傳指定格式的圖片文件!');”

“}”

“$count=0;”

“do {”

“$file=sprintf('%s/%08x.%s',UPLOADPATH,mt_rand(),$ext);”

“$fp-@fopen === FALSE&& ++$count < 10);”

“if ($fp === FALSE) {”

“die('無法生成文件!');”

“}”

“fclose($fp);”

“return $file;”,“}”等語句,創(chuàng)建所需的函數(shù)來檢測(cè)上傳的文件。這里的“$scfile”代表上傳的文件,首先分析和提取上傳文件的路徑信息,并獲取其規(guī)格化的擴(kuò)展名,如果擴(kuò)展名不符合要求(這里只能為圖片文件),則彈出警告信息。

之后通過一個(gè)循環(huán),在指定的上傳路徑下創(chuàng)建名稱為隨機(jī)的文件,如果其可以順利打開的話,則說明創(chuàng)建成功,之后返回該文件名,該文件名中包含了絕對(duì)路徑信息。

之后執(zhí)行:

“$scfile= check_upfile($realfile)”

“if(! move_uploaded_file($tmpfile,$scfile)){”

“die('文件不能上傳!');”

“}”等語句,將上傳的而原始文件寫入到上述文件中,“realfile”表示原始文件名。

這樣,就將其存儲(chǔ)到了非公開的路徑中。當(dāng)用戶需要查看上傳的文件時(shí),不能讓其直接獲取到實(shí)際的路徑,而必須通過特定的腳本來讀取,并將讀取的信息返回給用戶。

例 如 輸 入“$imgurl='g i v e t o u s e r f i l e.php?file=',basename($scfile);”語句,調(diào)用專用的腳本來讀取上傳的文件,并獲取對(duì)應(yīng)的文件路徑信息。

其 中“givetouserfile.php”腳本就是用來獲取上傳文件信息的。

其內(nèi)容為:

“define('UPLOADPATH','/var/upload');”

“$mimes=array('jpg'=>'image/jpeg','png'=>'image/png','bmp'=>'image/bmp');”

“$f i l e=$_G E T['file'];”

“$i n f o=p a t h i n f o($file);”

“$ext=strtolower($info['extension']);”

“$c o n t e n t_type=$mimes[$ext];”

“if (! $content_type){”

“die('上傳格式錯(cuò)誤!');}”

“header('Content-Type: '. $content_type);”

“readfile(UPLOADPATH. '/ .basename($file));”

“?>”等行,其作用是將傳遞的文件名進(jìn)行分析,來提取其擴(kuò)展名,并找到擴(kuò)展名對(duì)應(yīng)的鍵值,如果找到的話,說明文件類型合規(guī),然后就讀取其內(nèi)容,并將其寫入到HTTP數(shù)據(jù)包中返回給用戶。

并 通 過“"> 上傳的文件”語句,來顯示上傳文件鏈接,當(dāng)點(diǎn)擊該連接時(shí),就會(huì)顯示上傳的圖片文件。

但是,用戶無法了解其實(shí)際的路徑。這樣就從限制文件格式,存儲(chǔ)到非公開目錄,不顯示具體鏈接等方面保證了上傳文件的安全。即使用戶上傳了非法文件,也是無法訪問和執(zhí)行的。

當(dāng)然,這里只是使用了簡(jiǎn)單的代碼進(jìn)行示例性的說明。

多重檢測(cè)防止跨站腳本攻擊

對(duì)于黑客來說,為了實(shí)現(xiàn)對(duì)客戶機(jī)進(jìn)行攻擊,往往會(huì)采取上傳包含有惡意代碼的圖片或者PDF文檔等方式,來誘使用戶進(jìn)行下載,當(dāng)用戶下載了看似正常的文件后,在進(jìn)行瀏覽時(shí)就會(huì)激活其中隱藏的惡意代碼,從而可對(duì)Web服務(wù)器造成安全威脅。

對(duì)于這種狡猾的“迂回”攻擊策略,需要引起管理員的重視。

例如如果網(wǎng)站存在會(huì)話管理或者認(rèn)證機(jī)制的話,當(dāng)黑客實(shí)現(xiàn)了攻擊后,網(wǎng)站的SessionID和Cookie信息就會(huì)泄露出去,黑客就可借此進(jìn)行認(rèn)證,從而偽裝用戶身份進(jìn)行非法操作。

當(dāng)因?yàn)樵谟脩粝螺d某些文件時(shí),瀏覽器有時(shí)并不能正確識(shí)別文件的類型,例如黑客會(huì)上傳數(shù)據(jù)中包含HTML標(biāo)簽的圖片文件,導(dǎo)致瀏覽器誤認(rèn)為其是HTML文件,當(dāng)在瀏覽器中進(jìn)行查看時(shí)就會(huì)觸發(fā)其中的惡意JavaScript代碼。

為了防止這種攻擊行為,需要正確設(shè)置文件的Content-Type類型信息,這一點(diǎn)非常重要。對(duì)上傳的文件進(jìn)行檢測(cè),保證文件擴(kuò)展名和內(nèi)容保持一致。

例如對(duì)于JPG文件來說,必須確保其擴(kuò)展名和文件頭信息匹配。為了避免在瀏覽器中直接執(zhí)行文件,而僅僅是下載操作的話,需要在響應(yīng)頭中指定“Content-Disposition:attachment”參數(shù)信息。

運(yùn)行“regedit.exe”程序,在注冊(cè)表編輯器中打開“HKEY_CLASSES_ROOTMIMEDatabaseContent Type”分支,在其中顯示IE可以處理的所有Content-Type類型,例如對(duì)于擴(kuò)展名為“.pdf”的文件來說,其Content-Type的 類 型 為“application/pdf”。

當(dāng)IE接收到非圖片類型的文件時(shí),就會(huì)在注冊(cè)表的上述位置查找與其對(duì)應(yīng)的Content-Type信息,如果服務(wù)器端發(fā)送的Content-Type信息在本地找不到的話,IE就會(huì)根據(jù)具體URL地址中的擴(kuò)展名進(jìn)行判斷。而如果攻擊者在構(gòu)建URL地址時(shí)惡意添加了某些特定的信息,最終IE就會(huì)根據(jù)這些信息認(rèn)為是一個(gè)HTML文件而加以執(zhí)行。

例如黑客會(huì)在特制的PDF文件中嵌入JavaScript代碼,之后利用網(wǎng)站設(shè)計(jì)上的漏洞(例如程序員使用了過時(shí)的Content-Type類型等),并以此構(gòu)建惡意的訪問鏈接,導(dǎo)致用戶訪問該鏈接而進(jìn)行跨站攻擊。

對(duì)于此類安全威脅,可以在上傳和下載兩個(gè)環(huán)節(jié)進(jìn)行管控。

對(duì)于上傳來說,需要檢測(cè)文件擴(kuò)展名是否在允許的范圍內(nèi),對(duì)于圖片文件需要確認(rèn)其文件頭信息。

例如對(duì)于PHP來說,可以定義一個(gè)函數(shù)來進(jìn)行執(zhí)行檢測(cè)。

例如輸入:

“ function checktype($imgfile,$scfile){”

“$i n f o=p a t h i n f o($scfile);”

“$ext=strtolower($inf o['extension']);”

“if ($ext != 'png' &&$ext != 'jpg' && $ext !='gid'){”

“die('上傳的文件是非法的!')”

“$imginfo=getimagesiz e($imgfile);”

“$type=$imginfo[2];”

“if ($ext=='gif' &&$type==IMAGETYPE_GIF)return;”

“if ($ext=='jpg' &&$type==IMAGETYPE_JPEG)return;”

“if ($ext=='png' &&$type==IMAGETYPE_PNG)return;”

“die('圖片格式存在問題!')}”等語句。利用這些程序,可以對(duì)指定的文件進(jìn)行檢測(cè)。如果其格式和類型存在問題,就顯示警告信息。

之后使用:

“c h e c k_i m a g e_t y o p e($t m p f i l e,$realfile);”

“$s c f i l e=c h e c k_upfile($realfile)”

“$scfile= check_upfile ($realfile)”

“if(! move_uploaded_file($tmpfile,$scfile)){”,“die(' 文 件 不 能 上傳!');}”等語句,來調(diào)用該函數(shù),執(zhí)行檢測(cè)上傳的圖片類型,文件格式以及存儲(chǔ)到非公開目錄等操作。

在下載文件時(shí),需要正確設(shè)置Content-Type類型信息,針對(duì)圖片文件需要檢測(cè)文件頭,在有些時(shí)候,需要在響應(yīng)頭中指定“Content-Disposition:attachment”參數(shù)信息。

如果在下載的時(shí)候,沒有經(jīng)過預(yù)設(shè)的腳本進(jìn)行處理,就直接可以在Web服務(wù)器上的公開目錄上出現(xiàn)的話,就說明服務(wù)器端配置存在一定的的問題。

例如對(duì)于Apache來說,和Content-Type信息相關(guān)的設(shè)置保存在名為“mime.types”的文件之中,需要對(duì)其進(jìn)行檢測(cè),來查看是否存在錯(cuò)誤的Content-Type信息。

因?yàn)锳pache是基于文件擴(kuò)展名,來產(chǎn)生相應(yīng)的Content-Type信息的。在下載圖片文件時(shí),依然需要對(duì)其文件頭進(jìn)行校驗(yàn),可以有效提高安全性。

為了避免在瀏覽器中直接執(zhí)行文件,而僅僅將其下載到本地,可以在響應(yīng)消息頭中執(zhí)行“Content-Disposition:attachment”,或者將Content-Type設(shè) 置 為“application/octetstream”,就可以實(shí)現(xiàn)單純的下載操作。

例如對(duì)于PDF來說,可在網(wǎng)站程序中使用上述“givetouserfile.php” 腳本,所不同的是在其中將的“$mimes=array”行內(nèi)容修改 為“$mimes=array('pdf'=>'application/octetstream')”。

并且在尾部添加:

“header('Content-Disposition: attachment;filename="'.basename($file).'" ');”

“readfile($path)”等語句,來設(shè)置只用于下載的文件信息。

這樣當(dāng)瀏覽器處理時(shí)就直接進(jìn)行下載了。

猜你喜歡
用戶檢測(cè)信息
“不等式”檢測(cè)題
“一元一次不等式”檢測(cè)題
“一元一次不等式組”檢測(cè)題
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
小波變換在PCB缺陷檢測(cè)中的應(yīng)用
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
展會(huì)信息
主站蜘蛛池模板: 98精品全国免费观看视频| 搞黄网站免费观看| 日韩大片免费观看视频播放| 国内精品小视频在线| 青青草一区| 亚洲高清无码久久久| 91亚瑟视频| 在线观看国产精品一区| 爆操波多野结衣| 成年女人a毛片免费视频| 伦伦影院精品一区| 国产制服丝袜91在线| 制服丝袜亚洲| 在线观看视频99| 久久一日本道色综合久久| 国产在线视频二区| 久久亚洲国产一区二区| 久热re国产手机在线观看| 亚洲最大看欧美片网站地址| 欧美日韩福利| 在线中文字幕网| 有专无码视频| 91人妻在线视频| 国产色爱av资源综合区| 国产在线专区| 欧美成人精品一区二区| 亚洲男人的天堂视频| 波多野结衣无码视频在线观看| 亚洲天堂区| 婷婷丁香在线观看| 中文字幕免费在线视频| 伊在人亚洲香蕉精品播放| 日韩成人午夜| 国产白浆在线| 国产人在线成免费视频| av在线5g无码天天| 91精品国产91久无码网站| 91成人免费观看在线观看| 精品91视频| 日本黄色不卡视频| 午夜一区二区三区| 97青草最新免费精品视频| 重口调教一区二区视频| 国产99欧美精品久久精品久久| 亚洲精品国产成人7777| 精品国产中文一级毛片在线看| 制服丝袜一区二区三区在线| 日韩欧美中文在线| 啦啦啦网站在线观看a毛片| 精品三级网站| 中国黄色一级视频| 久久综合结合久久狠狠狠97色| 亚洲伊人久久精品影院| 国产黄网永久免费| 国产在线视频自拍| 久久久久亚洲av成人网人人软件 | …亚洲 欧洲 另类 春色| 成人一区在线| 日韩无码真实干出血视频| 天天摸夜夜操| 亚洲国产精品无码久久一线| 国产精品尤物在线| 亚洲乱码视频| 国产小视频免费| 欧美精品亚洲精品日韩专区va| 亚洲无码不卡网| 久久久久亚洲AV成人网站软件| 刘亦菲一区二区在线观看| 国产欧美网站| 最新加勒比隔壁人妻| 色哟哟国产精品一区二区| 免费又爽又刺激高潮网址 | 欧美一区二区自偷自拍视频| 欧美激情视频二区| 在线观看欧美精品二区| 91偷拍一区| 国产欧美精品午夜在线播放| 国产91熟女高潮一区二区| 国产18在线| 亚洲性视频网站| 国产制服丝袜91在线| 日韩在线欧美在线|