电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP安全-文件上傳攻擊

瀏覽:125日期:2022-09-12 09:50:45
文件上傳攻擊

有時在除了標準的表單數據外,你還需要讓用戶進行文件上傳。由于文件在表單中傳送時與其它的表單數據不同,你必須指定一個特別的編碼方式multipart/form-data:

CODE:

<form action='upload.php' method='POST' enctype='multipart/form-data'>

一個同時有普通表單數據和文件的表單是一個特殊的格式,而指定編碼方式可以使瀏覽器能按該可格式的要求去處理。

允許用戶進行選擇文件并上傳的表單元素是很簡單的:

CODE:

<input type='file' name='attachment' />

該元素在各種瀏覽器中的外觀表現形式各有不同。傳統上,界面上包括一個標準的文本框及一個瀏覽按鈕,以使用戶能直接手工錄入文件的路徑或通過瀏覽選擇。在Safari瀏覽器中只有瀏覽按鈕。幸運的是,它們的作用與行為是相同的。

為了更好地演示文件上傳機制,下面是一個允許用戶上傳附件的例子:

CODE:

<form action='upload.php' method='POST' enctype='multipart/form-data'>

<p>Please choose a file to upload:

<input type='hidden' name='MAX_FILE_SIZE' value='1024' />

<input type='file' name='attachment' /><br />

<input type='submit' value='Upload Attachment' /></p>

</form>

隱藏的表單變量MAX_FILE_SIZE告訴了瀏覽器最大允許上傳的文件大小。與很多客戶端限制相同,這一限制很容易被攻擊者繞開,但它可以為合法用戶提供向導。在服務器上進行該限制才是可靠的。

PHP的配置變量中,upload_max_filesize控制最大允許上傳的文件大小。同時post_max_size(POST表單的最大提交數據的大小)也能潛在地進行控制,因為文件是通過表單數據進行上傳的。

接收程序upload.php顯示了超級全局數組$_FILES的內容:

CODE:

<?php

header(’Content-Type: text/plain’);

print_r($_FILES);

?>

為了理解上傳的過程,我們使用一個名為author.txt的文件進行測試,下面是它的內容:

CODE:

Chris Shiflett

http://shiflett.org/

當你上傳該文件到upload.php程序時,你可以在瀏覽器中看到類似下面的輸出:

CODE:

Array

(

[attachment] => Array

(

[name] => author.txt

[type] => text/plain

[tmp_name] => /tmp/phpShfltt

[error] => 0

[size] => 36

)

)

雖然從上面可以看出PHP實際在超級全局數組$_FILES中提供的內容,但是它無法給出表單數據的原始信息。作為一個關注安全的開發者,需要識別輸入以知道瀏覽器實際發送了什么,看一下下面的HTTP請求信息是很有必要的:

CODE:

POST /upload.php HTTP/1.1

Host: example.org

Content-Type: multipart/form-data; boundary=----------12345

Content-Length: 245

----------12345

Content-Disposition: form-data; name='attachment'; filename='author.txt'

Content-Type: text/plain

Chris Shiflett

http://shiflett.org/

----------12345

Content-Disposition: form-data; name='MAX_FILE_SIZE'

1024

----------12345--

雖然你沒有必要理解請求的格式,但是你要能識別出文件及相關的元數據。用戶只提供了名稱與類型,因此tmp_name,error及size都是PHP所提供的。

由于PHP在文件系統的臨時文件區保存上傳的文件(本例中是/tmp/phpShfltt),所以通常進行的操作是把它移到其它地方進行保存及讀取到內存。如果你不對tmp_name作檢查以確保它是一個上傳的文件(而不是/etc/passwd之類的東西),存在一個理論上的風險。之所以叫理論上的風險,是因為沒有一種已知的攻擊手段允許攻擊者去修改tmp_name的值。但是,沒有攻擊手段并不意味著你不需要做一些簡單的安全措施。新的攻擊手段每天在出現,而簡單的一個步驟能保護你的系統。

PHP提供了兩個方便的函數以減輕這些理論上的風險:is_uploaded_file( ) and move_uploaded_file( )。如果你需要確保tmp_name中的文件是一個上傳的文件,你可以用is_uploaded_file( ):

CODE:

<?php

$filename = $_FILES[’attachment’][’tmp_name’];

if (is_uploaded_file($filename))

{

/* $_FILES[’attachment’][’tmp_name’] is an uploaded file. */

}

?>

如果你希望只把上傳的文件移到一個固定位置,你可以使用move_uploaded_file( ):

CODE:

<?php

$old_filename = $_FILES[’attachment’][’tmp_name’];

$new_filename = ’/path/to/attachment.txt’;

if (move_uploaded_file($old_filename, $new_filename))

{

/* $old_filename is an uploaded file, and the move was successful. */

}

?>

最后你可以用 filesize( ) 來校驗文件的大小:

CODE:

<?php

$filename = $_FILES[’attachment’][’tmp_name’];

if (is_uploaded_file($filename))

{

$size = filesize($filename);

}

?>

這些安全措施的目的是加上一層額外的安全保護層。最佳的方法是永遠盡可能少地去信任。

標簽: PHP
相關文章:
主站蜘蛛池模板: 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 精密模具加工制造 - 富东懿 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 猪I型/II型胶原-五克隆合剂-细胞冻存培养基-北京博蕾德科技发展有限公司 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 深圳公司注册-工商注册公司-千百顺代理记账公司 | 北京环球北美考试院【官方网站】|北京托福培训班|北京托福培训 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 方源木业官网-四川木门-全国木门专业品牌| CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | Q361F全焊接球阀,200X减压稳压阀,ZJHP气动单座调节阀-上海戎钛 | 早报网| 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 湿地保护| 威客电竞(vk·game)·电子竞技赛事官网| 好笔杆子网 - 公文写作学习交流分享平台| 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 冷油器,取样冷却器,热力除氧器-连云港振辉机械设备有限公司 | 高压分散机(高压细胞破碎仪)百科-北京天恩瀚拓 | 钛板_钛管_钛棒_钛盘管-无锡市盛钛科技有限公司 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 |