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

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

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

瀏覽:216日期: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
相關文章:
主站蜘蛛池模板: 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 橡胶接头_橡胶软接头_可曲挠橡胶接头-巩义市创伟机械制造有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | 小型气象站_车载气象站_便携气象站-山东风途物联网 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 横河变送器-横河压力变送器-EJA变送器-EJA压力变送器-「泉蕴仪表」 | 座椅式升降机_无障碍升降平台_残疾人升降平台-南京明顺机械设备有限公司 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 999范文网_优质范文下载写作帮手 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 披萨石_披萨盘_电器家电隔热绵加工定制_佛山市南海区西樵南方综合保温材料厂 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 铝合金电阻-无源谐波滤波器-上海稳达电讯设备厂 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 进口消泡剂-道康宁消泡剂-陶氏消泡剂-大洋消泡剂 | 广州昊至泉水上乐园设备有限公司 | 国际高中-国际学校-一站式择校服务-远播国际教育 | 农产品溯源系统_农产品质量安全追溯系统_溯源系统 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 |