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

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

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

瀏覽:217日期: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
相關文章:
主站蜘蛛池模板: 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 宁波普瑞思邻苯二甲酸盐检测仪,ROHS2.0检测设备,ROHS2.0测试仪厂家 | 烟台游艇培训,威海游艇培训-烟台市邮轮游艇行业协会 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 中山市派格家具有限公司【官网】 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | PE一体化污水处理设备_地埋式生活污水净化槽定制厂家-岩康塑业 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 挨踢网-大家的导航! | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 上海网站建设-上海网站制作-上海网站设计-上海做网站公司-咏熠软件 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 中山市派格家具有限公司【官网】 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 油冷式_微型_TDY电动滚筒_外装_外置式电动滚筒厂家-淄博秉泓机械有限公司 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 江苏皓越真空设备有限公司| Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 进口消泡剂-道康宁消泡剂-陶氏消泡剂-大洋消泡剂 | 打包箱房_集成房屋-山东佳一集成房屋有限公司 |