日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP文件上傳功能實(shí)現(xiàn)邏輯分析

瀏覽:320日期:2022-06-06 14:24:48
目錄
  • 文件名字處理
  • 文件內(nèi)容處理
  • 文件權(quán)限處理

文件名字處理

文件名字得看業(yè)務(wù)要求。不需要保留原始名字,則隨機(jī)生成名字,拼接上白名單校驗(yàn)過(guò)的后綴即可。

反之要謹(jǐn)慎處理:

//允許上傳的后綴白名單
$extension_white_list = ["jpg", "pdf"];
//原始文件的名字
$origin_file_name = "xx/xxx/10月CPI同比上漲2.1%.php.pdf";
//提取文件后綴,并校驗(yàn)是否在白名單內(nèi)
$extension = strtolower(pathinfo($origin_file_name, PATHINFO_EXTENSION));
if (!in_array($extension, $extension_white_list)) {
    die("錯(cuò)誤的文件類型");
}
//提取文件名
$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));
//只保留有限長(zhǎng)度的名字
$new_file_name = mb_substr($new_file_name, 0, 20);
//替換掉所有的 . 避免攻擊者構(gòu)造多后綴的文件,缺點(diǎn)是文件名不能包含 .
$new_file_name = str_replace(".", "_", $new_file_name);
//把處理過(guò)的名字和后綴拼接起來(lái)構(gòu)造成一個(gè)名字
$new_file_name = $new_file_name . "." . $extension;
print_r($new_file_name); //10月CPI同比上漲2_1%_php.pdf

文件內(nèi)容處理

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

針對(duì)圖片文件,可以讀取圖片文件頭判斷圖片類型,當(dāng)然我也沒(méi)測(cè)試過(guò)這個(gè)方法,感興趣的可以自測(cè)。

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

針對(duì)圖片文件內(nèi)容處理,真正的大招是重繪圖片。

windows 系統(tǒng)下用 copy 命令可以制作一個(gè)包含 php 代碼的圖片文件,命令如下:

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

上述命令的意思是,把 test.php 合并到 1.jpg 的尾部,并重新導(dǎo)出到 2.jpg 里面,如此一來(lái),這個(gè) 2.jpg 就是一個(gè)包含 php 代碼的圖片文件,可以用記事本打開(kāi)它,拖滾動(dòng)條到底部看到 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);
}

這個(gè)處理辦法的缺點(diǎn)是,耗費(fèi)內(nèi)存,圖片失真,而且只能處理圖片。

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

文件權(quán)限處理

只討論 Linux 下的權(quán)限,先簡(jiǎn)單介紹 Linux 的權(quán)限:

讀取,字母 r 或數(shù)字 4 表示
寫入,字母 w 或數(shù)字 2 表示
執(zhí)行,字母 x 或數(shù)字 1 表示

對(duì)文件來(lái)講,rwx 是如下含義:

r:可打開(kāi)讀取此文件
w:可寫入此文件
x:可執(zhí)行此文件

對(duì)目錄來(lái)講,rwx 的含義又有點(diǎn)差別:

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

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

有了對(duì) Linux 的權(quán)限了解,針對(duì)上傳的文件所在的目錄,應(yīng)該設(shè)定 755 權(quán)限,表示:

  • 創(chuàng)建該目錄的用戶有讀取、寫入、進(jìn)入此目錄的權(quán)限
  • 和創(chuàng)建該目錄的用戶處于同一用戶組的用戶有讀取、進(jìn)入此目錄的權(quán)限
  • 既不是創(chuàng)建者也不是同一個(gè)小組的其它用戶有讀取、進(jìn)入此目錄的權(quán)限

755 的權(quán)限設(shè)定,可以讓 nginx 代理靜態(tài)文件的時(shí)候不會(huì)報(bào) 403 錯(cuò)誤。

代碼示例:

mkdir($save_path, 0755, true);

針對(duì)上傳的文件,采用更嚴(yán)格的權(quán)限設(shè)定,應(yīng)該設(shè)定 644 權(quán)限,表示:

創(chuàng)建該文件的用戶有讀取、寫入此文件的權(quán)限,無(wú)法執(zhí)行

和創(chuàng)建該文件的用戶處于同一用戶組的用戶只有讀取權(quán)限

既不是創(chuàng)建者也不是同一個(gè)小組的其它用戶只有讀取權(quán)限

644 的權(quán)限設(shè)定,可以確保即便是上傳了一個(gè)非法文件也無(wú)法串改內(nèi)容、執(zhí)行。

代碼示例:

chmod($file, 0644);

到此這篇關(guān)于PHP文件上傳功能實(shí)現(xiàn)邏輯分析的文章就介紹到這了,更多相關(guān)PHP文件上傳內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆精品一区二区综合av| 99国产精品一区二区| 999久久久亚洲| 日韩高清不卡在线| 欧美sss在线视频| 亚洲一级大片| 久久国产主播| 日本成人在线一区| 亚洲欧洲日本mm| 精品视频网站| 日韩在线黄色| 91久久久久| bbw在线视频| 日本成人一区二区| 欧美激情另类| 国产精品一区二区三区av麻| 在线精品一区二区| 精品国产aⅴ| 日韩不卡手机在线v区| 99成人在线视频| 成人欧美一区二区三区的电影| 欧美亚洲三区| 午夜在线播放视频欧美| 激情黄产视频在线免费观看| 免费一级欧美在线观看视频| 久久精品av| 99在线精品视频在线观看| 美腿丝袜亚洲一区| 欧美日韩中文字幕一区二区三区| 日韩在线成人| 在线亚洲免费| 伊人久久大香线蕉av不卡| 国产一二在线播放| 欧美精品三级在线| 国产精品亚洲一区二区在线观看 | 国产91精品对白在线播放| 麻豆视频在线看| 不卡在线一区| 亚洲在线观看| 亚洲毛片在线免费| 国产欧美日韩精品高清二区综合区| 日本精品另类| 青青草国产精品亚洲专区无| 荡女精品导航| 亚洲欧洲美洲av| 色综合www| 首页欧美精品中文字幕| 亚洲精品国产日韩| 国产精品一线| 亚洲香蕉网站| 天堂成人国产精品一区| 日韩在线观看中文字幕| 精品久久97| 亚洲日本网址| 狠狠爱www人成狠狠爱综合网| 亚洲精品国模| 国产精品男女| 免费一区二区三区在线视频| 性欧美videohd高精| 欧美日韩国产高清电影| 国产一区日韩欧美| 日韩精品成人| 久久精品资源| 亚洲伦乱视频| 青青草国产成人99久久| 久久久国产精品网站| 久久不卡日韩美女| 欧美va天堂| 91免费精品国偷自产在线在线| 久久亚洲黄色| 五月天久久久| 日韩不卡一二三区| 久久激情婷婷| 免播放器亚洲一区| 国产免费av国片精品草莓男男| 欧美aa在线观看| 亚洲精品在线观看91| 青青草精品视频| 亚洲成av人片一区二区密柚| 免费精品视频| 美女在线视频一区| 日韩成人亚洲| 亚洲人妖在线| 欧美91精品| 国产黄色一区| 国产农村妇女精品一区二区| www在线观看黄色| 狠狠干成人综合网| 国产精品亚洲欧美日韩一区在线 | 欧美日韩激情| 日韩不卡免费视频| 成人日韩在线| 亚洲视频国产精品| 国产66精品| 国产欧美日韩在线一区二区| 久久精品亚洲人成影院| 91精品麻豆| 久久亚洲不卡| 国产白浆在线免费观看| 一区二区三区四区在线看| 久久激情五月婷婷| 国产成人精品亚洲线观看| 日本中文字幕不卡| 亚洲精品.com| 91精品尤物| 亚洲免费成人| 国产精品欧美日韩一区| 日韩精品视频在线看| 国产va免费精品观看精品视频| 蜜臀av在线播放一区二区三区| 日韩精品诱惑一区?区三区| 亚洲精品国模| 蜜桃伊人久久| 99精品美女| 麻豆91精品视频| 日韩av午夜在线观看| 国产一区二区三区四区| 欧美资源在线| 国户精品久久久久久久久久久不卡| 国产视频一区二| 香蕉成人久久| 国产农村妇女精品一区二区| 水蜜桃精品av一区二区| 日韩高清一区在线| 亚洲精品精选| 美女少妇全过程你懂的久久| 国产一区二区三区不卡av | 国产精品7m凸凹视频分类| 蜜桃av一区二区| 国内一区二区三区| 欧美在线精品一区| 天堂网av成人| 欧美sm一区| 精品国产亚洲一区二区三区| 精品91久久久久| 黄色成人91| 999久久久国产精品| 日韩欧美中文在线观看| 亚洲一区欧美| 亚洲一卡久久| 久久亚洲风情| 伊人影院久久| 激情婷婷亚洲| 亚洲欧美日韩高清在线| 丰满少妇一区| 久久影院午夜精品| 欧美激情视频一区二区三区免费| 国产欧美三级| 日韩激情视频网站| 国产日本亚洲| 日本一区二区三区视频在线看| 亚洲综合电影一区二区三区| 亚洲网站视频| 韩国三级一区| 91一区二区| 成人三级高清视频在线看| 国产精品久久久久久久久久久久久久久 | 欧美韩日一区| 精品成av人一区二区三区 | 国产精品91一区二区三区| 日本不卡免费高清视频在线| 欧美日韩精品免费观看视完整 | 欧美另类综合| 天堂成人免费av电影一区| 99riav1国产精品视频| 精品视频一区二区三区四区五区 | 老牛影视一区二区三区| 日韩亚洲在线| 亚洲精品系列| 亚洲精品第一| 日本一区免费网站| 国产经典一区| 加勒比视频一区| 久久精品高清| 午夜国产精品视频免费体验区| 欧美成人高清| 亚洲人成网站在线在线观看| 日本91福利区| 日本不卡不码高清免费观看 | 亚洲大片在线| 亚洲视频二区| 日韩高清不卡在线| 日本久久综合| 久久久久国产精品一区三寸| 亚洲精品97| 国产调教精品| caoporn视频在线| 久久久久一区| 亚洲伊人精品酒店| 91精品国产经典在线观看| 日韩av资源网| 国产精品入口久久| 国产h片在线观看| 亚洲精品电影| 婷婷综合成人| 久久免费黄色| 亚洲欧洲美洲国产香蕉| 亚洲日本国产| 日本美女一区| 另类av一区二区|