亚洲综合社区欧美综合色-欧美逼逼一区二区三区-国产老熟女高潮精品网站-国产日韩最新视频在线看

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

PHP漏洞全解-文件上傳漏洞

發(fā)布時(shí)間:  2012/5/18 19:00:28

一套web應(yīng)用程序,一般都會(huì)提供文件上傳的功能,方便來(lái)訪者上傳一些文件。

下面是一個(gè)簡(jiǎn)單的文件上傳表單

  1. <form action="upload.php" method="post" enctype="multipart/form-data" name="form1"> 
  2. <input type="file" name="file1" /><br /> 
  3. <input type="submit" value="上傳文件" /> 
  4. <input type="hidden" name="MAX_FILE_SIZE" value="1024" /> 
  5. form> 

php的配置文件php.ini,其中選項(xiàng)upload_max_filesize指定允許上傳的文件大小,默認(rèn)是2M

$_FILES數(shù)組變量

PHP使用變量$_FILES來(lái)上傳文件,$_FILES是一個(gè)數(shù)組。如果上傳test.txt,那么$_FILES數(shù)組的內(nèi)容為:

  1. $FILES 
  2. Array 
  3. [file] => Array 
  4. [name] => test.txt //文件名稱(chēng) 
  5. [type] => text/plain //MIME類(lèi)型 
  6. [tmp_name] => /tmp/php5D.tmp //臨時(shí)文件 
  7. [error] => 0 //錯(cuò)誤信息 
  8. [size] => 536 //文件大小,單位字節(jié) 

如果上傳文件按鈕的name屬性值為file

  1. <input type="file" name="file" /> 

那么使用$_FILES['file']['name']來(lái)獲得客戶端上傳文件名稱(chēng),不包含路徑。使用$_FILES['file']['tmp_name']來(lái)獲得服務(wù)端保存上傳文件的臨時(shí)文件路徑

存放上傳文件的文件夾

PHP不會(huì)直接將上傳文件放到網(wǎng)站根目錄中,而是保存為一個(gè)臨時(shí)文件,名稱(chēng)就是$_FILES['file']['tmp_name']的值,開(kāi)發(fā)者必須把這個(gè)臨時(shí)文件復(fù)制到存放的網(wǎng)站文件夾中。

$_FILES['file']['tmp_name']的值是由PHP設(shè)置的,與文件原始名稱(chēng)不一樣,開(kāi)發(fā)者必須使用$_FILES['file']['name']來(lái)取得上傳文件的原始名稱(chēng)。

上傳文件時(shí)的錯(cuò)誤信息

$_FILES['file']['error']變量用來(lái)保存上傳文件時(shí)的錯(cuò)誤信息,它的值如下:

錯(cuò)誤信息 數(shù)值 說(shuō) 明
UPLOAD_ERR_OK 0 沒(méi)有錯(cuò)誤
UPLOAD_ERR_INI_SIZE 1 上傳文件的大小超過(guò)php.ini的設(shè)置
UPLOAD_ERR_FROM_SIZE 2 上傳文件的大小超過(guò)HTML表單中MAX_FILE_SIZE的值
UPLOAD_ERR_PARTIAL 3 只上傳部分的文件
UPLOAD_ERR_NO_FILE 4 沒(méi)有文件上傳

文件上傳漏洞

如果提供給網(wǎng)站訪問(wèn)者上傳圖片的功能,那必須小心訪問(wèn)者上傳的實(shí)際可能不是圖片,而是可以指定的PHP程序。如果存放圖片的目錄是一個(gè)開(kāi)放的文件夾,則入侵者就可以遠(yuǎn)程執(zhí)行上傳的PHP文件來(lái)進(jìn)行攻擊。

下面是一個(gè)簡(jiǎn)單的文件上傳例子:

  1. php 
  2. // 設(shè)置上傳文件的目錄 
  3. $uploaddir = "D:/www/images/"
  4. // 檢查file是否存在 
  5. if (isset($_FILES['file1'])) 
  6. // 要放在網(wǎng)站目錄中的完整路徑,包含文件名 
  7. $uploadfile = $uploaddir . $_FILES['file1']['name']; 
  8. // 將服務(wù)器存放的路徑,移動(dòng)到真實(shí)文件名 
  9. move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile); 
  10. ?> 
  11. …… 
  12. <form method="post" enctype="multipart/form-data" name="form1"> 
  13. <input type="file" name="file1" /><br /> 
  14. <input type="submit" value="上傳文件" /> 
  15. <input type="hidden" name="MAX_FILE_SIZE" value="1024" /> 
  16. form> 

這個(gè)例子沒(méi)有檢驗(yàn)文件后綴,可以上傳任意文件,很明顯的上傳漏洞


本文出自:億恩科技【1tcdy.com】
php 
  • // 設(shè)置上傳文件的目錄 
  • $uploaddir = "D:/www/images/"
  • // 檢查file是否存在 
  • if (isset($_FILES['file1'])) 
  • // 要放在網(wǎng)站目錄中的完整路徑,包含文件名 
  • $uploadfile = $uploaddir . $_FILES['file1']['name']; 
  • // 將服務(wù)器存放的路徑,移動(dòng)到真實(shí)文件名 
  • move_uploaded_file($_FILES['file1']['tmp_name'], $uploadfile); 
  • ?> 
  • …… 
  • <form method="post" enctype="multipart/form-data" name="form1"> 
  • <input type="file" name="file1" /><br /> 
  • <input type="submit" value="上傳文件" /> 
  • <input type="hidden" name="MAX_FILE_SIZE" value="1024" /> 
  • form> 
  • 這個(gè)例子沒(méi)有檢驗(yàn)文件后綴,可以上傳任意文件,很明顯的上傳漏洞


    本文出自:億恩科技【1tcdy.com】
    -->

    服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專(zhuān)注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線