Loading...

文件上傳過程中使用白名單、黑名單、或者MIME做認證

Temperature: 0 °C

Mark ChangMark Chang


是不是被資安的問題搞得很煩?

我想,在建置系統的過程中,或多或少都會遇到資安的問題....

除非你是秉持著歡迎大家進來坐坐,想喝茶得自己來,泡咖啡的就在旁邊,然後吃不完可以順便帶走。

又或者,您的客人是一位很有禮貌的人,三不五時來拜訪您還給您帶來了禮物.....

但您希望說人來就好不用特別帶禮物來了。

又或者,如果您會想說真的想帶禮物,那麼幫我帶杯咖啡好了~

所以,該怎麼做?

設定黑名單
 $BlackList = array('asp','php','jsp','php5','asa','aspx');//黑名單列表
if (isset($_POST["submit"])){
$name = $_FILES['file']['name']; //接收上傳的檔案檔名
echo $name;
$extension = substr(strrchr($name,"."),1);//以副檔名判斷檔案類別
$boo = false;

foreach ($BlackList as $key=>$value){
if ($value==$extension){//判斷是否為自訂的黑名單
$boo=true;
break;//如果是黑名單直接退出
}
}
if(!$boo){//如果不是黑名單就進行上傳檔案
$size=$_FILES['file']['size'];//檔案大小
if($size>5242880){//檔案不能超過5MB
echo "您想上傳檔案不能超過5MB";
exit();
}
$tmp=$_FILES['upfile']['tmp_name'];//暫存位置
$uploadfile = $datum."_".$flag.".".$extension;//重新命名檔案
move_uploaded_file($tmp,"../uploadfile/".$uploadfile); //搬移到指定路徑
}else {
echo "您想上傳檔案無法允許被上傳";
}

}

設定白名單
$WhiteList = array('pdf','jpg','png','bmp','gif','jpg','doc');//白名單列表
if (isset($_POST["submit"])){
$name = $_FILES['file']['name']; //接收上傳的檔案檔名
$extension = substr(strrchr($name,"."),1);//以副檔名判斷檔案類別
$boo = false;

foreach ($WhiteList as $key=>$value){
if ($value==$extension){//判斷是否為自訂的白名單
$boo=true;
}
}
if($boo){//如果是白名單則開始執行
$size=$_FILES['file']['size'];//檔案大小
if($size>5242880){//檔案不能超過5MB
echo "您想上傳檔案不能超過5MB";
exit();
}
$tmp=$_FILES['upfile']['tmp_name'];//暫存位置
$uploadfile = $datum."_".$flag.".".$extension;//重新命名檔案
move_uploaded_file($tmp,"../uploadfile/".$uploadfile); //搬移到指定路徑
}else {
echo "您想上傳檔案無法允許被上傳";
}
}

MIME
if ($_FILE['file']['type']=="image/jpeg"){//判斷是否為jpg格式
$imageTempName=$_FILES['file']['tmp_name'];
$imageName=$_FILES['file']['name'];
$last = substr($imageName,strrpos($imageName,"."));
if(!is_dir("uploadFile"))
mkdir("uploadFile");
}
$imageName=md5($imageName).$last;
move_uploaded_file($imageTempName,"./uploadFile".$imageName);//指搬移到指定路徑
echo ("檔案上傳成功");
}
else{
echo ("您想上傳檔案無法允許被上傳");
exit();
}

我想,雖然禮多人不怪,但還是加把鎖,必竟我們現在談的是資安。
https://innstory.com/story-文件上傳過程中使用白名單、黑名單、或者MIME做認證-1594

About the Author

Mark Chang

離不開電腦的宅男

Visitor message

留下一些足跡證明你來拜訪過我

推薦閱讀

作者其他相關類別故事

如何緩存靜態資源使用HTTP緩存

如何緩存靜態資源使用HTTP緩存

配置服務器以返回CacheControlHTTP響應標頭: CacheControl:...

如何增加WordPress網站的PHP時間限制?

如何增加WordPress網站的PHP時間限制?

PHP時間限制是您的網站在超時之前將花費在單個操作上的時間。當操作達到設置的時間限制時...

JavaScript 搜尋字串並取代

JavaScript 搜尋字串並取代

在 JavaScript 做搜尋並取代字串可以使用 replace() replace...

請選擇選項

執行錯誤

Hi,謝謝你的參與,但無法重複投票哦~

現在就加入innstory,開始紀錄你的故事。

「innstory」是一個儲存故事的地方,我們致力於成為一個有溫度的平台,加深人與人之間的羈絆是我們所努力的方向。
我們深信人與人間的區塊鏈不是只是冷冰冰的運算。現在就加入我們。