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

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

PHP文件上傳功能實現邏輯分析

瀏覽:220日期:2022-06-06 14:24:48
目錄
  • 文件名字處理
  • 文件內容處理
  • 文件權限處理

文件名字處理

文件名字得看業務要求。不需要保留原始名字,則隨機生成名字,拼接上白名單校驗過的后綴即可。

反之要謹慎處理:

//允許上傳的后綴白名單
$extension_white_list = ["jpg", "pdf"];
//原始文件的名字
$origin_file_name = "xx/xxx/10月CPI同比上漲2.1%.php.pdf";
//提取文件后綴,并校驗是否在白名單內
$extension = strtolower(pathinfo($origin_file_name, PATHINFO_EXTENSION));
if (!in_array($extension, $extension_white_list)) {
    die("錯誤的文件類型");
}
//提取文件名
$new_file_name = pathinfo($origin_file_name, PATHINFO_BASENAME);
//截取掉后綴部分
$new_file_name = mb_substr($new_file_name, 0, mb_strlen($new_file_name) - 1 - mb_strlen($extension));
//只保留有限長度的名字
$new_file_name = mb_substr($new_file_name, 0, 20);
//替換掉所有的 . 避免攻擊者構造多后綴的文件,缺點是文件名不能包含 .
$new_file_name = str_replace(".", "_", $new_file_name);
//把處理過的名字和后綴拼接起來構造成一個名字
$new_file_name = $new_file_name . "." . $extension;
print_r($new_file_name); //10月CPI同比上漲2_1%_php.pdf

文件內容處理

文件后綴只是表面,一個 php 文件,把后綴改成 jpg,也改變不了它攜帶 php 代碼的事實。

針對圖片文件,可以讀取圖片文件頭判斷圖片類型,當然我也沒測試過這個方法,感興趣的可以自測。

另外即便上述方法可行,依然可以繞過,只要在 php 文件的頭部寫入某個圖片類型的頭部特征的字節即可偽裝。

針對圖片文件內容處理,真正的大招是重繪圖片。

windows 系統下用 copy 命令可以制作一個包含 php 代碼的圖片文件,命令如下:

Copy 1.jpg/b + test.php/a 2.jpg

上述命令的意思是,把 test.php 合并到 1.jpg 的尾部,并重新導出到 2.jpg 里面,如此一來,這個 2.jpg 就是一個包含 php 代碼的圖片文件,可以用記事本打開它,拖滾動條到底部看到 php 代碼。

像這種不干凈的圖片,用重繪圖片的方式可以剔除掉不干凈的部分。下面是重繪圖片的 php 代碼:

try {
    $jpg = "包含php代碼的.jpg";
    list($width, $height) = getimagesize($jpg);
    $im = imagecreatetruecolor($width, $height);
    $image = imagecreatefromjpeg($jpg);
    imagecopyresampled($im, $image, 0, 0, 0, 0, $width, $height, $width, $height);
    $target = "重繪后干凈的圖片.jpg";
    imagejpeg($image, $target);
} finally {
    isset($im) && is_resource($im) && imagedestroy($im);
    isset($image) && is_resource($image) && imagedestroy($image);
}

這個處理辦法的缺點是,耗費內存,圖片失真,而且只能處理圖片。

當然其它的文件格式,我也不知道能不能用重繪的思路去處理。

文件權限處理

只討論 Linux 下的權限,先簡單介紹 Linux 的權限:

讀取,字母 r 或數字 4 表示
寫入,字母 w 或數字 2 表示
執行,字母 x 或數字 1 表示

對文件來講,rwx 是如下含義:

r:可打開讀取此文件
w:可寫入此文件
x:可執行此文件

對目錄來講,rwx 的含義又有點差別:

r:可讀取此目錄的內容列表
w:可在此目錄里面進行:增、刪、改文件和子目錄
x:可進入此目錄

另外 Linux 里面,針對一個文件,用戶是會被分成三種,分別是:創建該文件的用戶、和創建該文件的用戶處于同一用戶組的用戶、既不是創建者也不是同一個小組的其它用戶。

有了對 Linux 的權限了解,針對上傳的文件所在的目錄,應該設定 755 權限,表示:

  • 創建該目錄的用戶有讀取、寫入、進入此目錄的權限
  • 和創建該目錄的用戶處于同一用戶組的用戶有讀取、進入此目錄的權限
  • 既不是創建者也不是同一個小組的其它用戶有讀取、進入此目錄的權限

755 的權限設定,可以讓 nginx 代理靜態文件的時候不會報 403 錯誤。

代碼示例:

mkdir($save_path, 0755, true);

針對上傳的文件,采用更嚴格的權限設定,應該設定 644 權限,表示:

創建該文件的用戶有讀取、寫入此文件的權限,無法執行

和創建該文件的用戶處于同一用戶組的用戶只有讀取權限

既不是創建者也不是同一個小組的其它用戶只有讀取權限

644 的權限設定,可以確保即便是上傳了一個非法文件也無法串改內容、執行。

代碼示例:

chmod($file, 0644);

到此這篇關于PHP文件上傳功能實現邏輯分析的文章就介紹到這了,更多相關PHP文件上傳內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: PHP
相關文章:
主站蜘蛛池模板: 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | 免费网站网址收录网_海企优网站推荐平台 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 慈溪麦田广告公司,提供慈溪广告设计。 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 长沙印刷厂-包装印刷-画册印刷厂家-湖南省日大彩色印务有限公司 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 不锈钢管件(不锈钢弯头,不锈钢三通,不锈钢大小头),不锈钢法兰「厂家」-浙江志通管阀 | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电| 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 国标白水泥,高标号白水泥,白水泥厂家-淄博华雪建材有限公司 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 溶氧传感器-pH传感器|哈美顿(hamilton) | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 心得体会网_心得体会格式范文模板 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 铝合金风口-玻璃钢轴流风机-玻璃钢屋顶风机-德州东润空调设备有限公司 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 |