探討:web上存漏洞及原理分析、防范方法
網(wǎng)站上存過程分析
<?php
header("Content-type: text/html; charset=utf-8");
if($_FILES)
{
echo '<pre>';
var_dump($_FILES);
echo '</pre>';
}
?>
<form action="" enctype="multipart/form-data" method="POST">
<input type="file" name="txt" size="50">
<input name="Submit" type="submit" value="提交" >
</form>
以上是個(gè)簡(jiǎn)單測(cè)試?yán)?,我們看?BR>

我們來分析下:
name來自 上存時(shí)候選擇文件名稱
type 是文件類型, 這個(gè)類型那里來的呢?呵呵,這里非常關(guān)鍵的。 很多時(shí)候,很多同人會(huì)認(rèn)為,這個(gè)是服務(wù)器自動(dòng)判斷生成的。 如果是這樣想,覺得也有可能。 php 封裝了上存,它自帶類庫(kù)好像可以的。 但是,反過來想想,你隨便選擇個(gè)什么格式文件,都會(huì)有格式類型。這樣一想,我們推斷這個(gè)值,可能也來自用戶輸入的。 我們來抓包看看我們類型。
type值 也來自,用戶輸入值了。
size來自程序計(jì)算上存文件大小,這個(gè)是自動(dòng)計(jì)算的。 相比我們都清楚的。
你說這么多有啥樣呢?
想必有朋友開始問了,我上面分析上存文件格式 ,跟開發(fā)出現(xiàn)漏洞有什么關(guān)聯(lián)呢。 其實(shí),我們想想,上面說的,一個(gè)文件名稱name屬性,以及文件類型type屬性。 在我們上存文件,后端處理時(shí)候,會(huì)經(jīng)常用到的。 作為開發(fā)者,在使用這2個(gè)變量,一定要繼續(xù)執(zhí)行“一切輸入代碼是有害的”原則。你在使用時(shí)候,要把它當(dāng)作,跟其它get,post 獲取變量一樣處理。 要檢測(cè),過濾一切輸入變量。
我們經(jīng)常做功能是,限定用戶輸入必須是某種格式文件,然后保存為該格式。分析到這里,下面有很多需要繼續(xù)分析地方,今天先提出大綱。接下來會(huì)分析這樣常見3類上存漏洞。
1.使用用戶文件名,生成文件,特殊字符過濾不嚴(yán)格,導(dǎo)致文件生成出現(xiàn)漏洞
2.移動(dòng)文件目錄時(shí)候,由于采用用戶傳入的文件名拼接,生成到錯(cuò)誤目錄
3.相信用戶輸入type 類型,直接將用戶文件名保存為文件
相關(guān)文章
重新封裝zend_soap實(shí)現(xiàn)http連接安全認(rèn)證的php代碼
重新封裝zend_soap實(shí)現(xiàn)http連接安全認(rèn)證,需要的朋友可以參考下。2011-01-01php字符比較函數(shù)similar_text、strnatcmp與strcasecmp用法分析
這篇文章主要介紹了php字符比較函數(shù)similar_text、strnatcmp與strcasecmp用法,以實(shí)例形式詳細(xì)分析了這三個(gè)字符串比較函數(shù)的具體用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11PHP7.1方括號(hào)數(shù)組符號(hào)多值復(fù)制及指定鍵值賦值用法分析
這篇文章主要介紹了PHP7.1方括號(hào)數(shù)組符號(hào)多值復(fù)制及指定鍵值賦值用法,結(jié)合實(shí)例形式對(duì)比分析了php7數(shù)組復(fù)制與賦值的新特性與操作技巧,需要的朋友可以參考下2016-09-09php常用字符串查找函數(shù)strstr()與strpos()實(shí)例分析
這篇文章主要介紹了php常用字符串查找函數(shù)strstr()與strpos(),結(jié)合具體實(shí)例形式分析了php字符串查找函數(shù)strstr()與strpos()的具體功能、用法、區(qū)別及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-06-06php實(shí)現(xiàn)與erlang的二進(jìn)制通訊實(shí)例解析
這篇文章主要介紹了php實(shí)現(xiàn)與erlang的二進(jìn)制通訊實(shí)例解析,需要的朋友可以參考下2014-07-07解決了Ajax、MySQL 和 Zend Framework 的亂碼問題
功夫不負(fù)有心人,花了將近一天時(shí)間,終于解決了Ajax 、MySQL 和 Zend Framework 的亂碼問題?,F(xiàn)在總結(jié)如下,以供參考。2009-03-03php獲取url字符串截取路徑的文件名和擴(kuò)展名的函數(shù)
php url字符串截取路徑的文件名和擴(kuò)展名,需要的朋友可以參考下。2010-01-01PHP在終端中實(shí)現(xiàn)進(jìn)度條來處理數(shù)據(jù)的示例詳解
在PHP中,有時(shí)候你需要在終端中處理大量數(shù)據(jù)或執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),同時(shí)希望能夠?qū)崟r(shí)跟蹤任務(wù)的進(jìn)度,在 PHP 中,有時(shí)候你需要在終端中處理大量數(shù)據(jù)或執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),同時(shí)希望能夠?qū)崟r(shí)跟蹤任務(wù)的進(jìn)度,需要的朋友可以參考下2023-10-10在php和MySql中計(jì)算時(shí)間差的方法詳解
這篇文章主要介紹了在php和MySql中計(jì)算時(shí)間差的方法詳解的相關(guān)資料,需要的朋友可以參考下2015-03-03