Loading...

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

Temperature: 0 °C

Mark ChangMark Chang
author_tools


文件上傳過程中使用白名單、黑名單、或者MIME做認證
是不是被資安的問題搞得很煩?

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

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

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

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

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

所以,該怎麼做?

設定黑名單

 $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
PHP

Prev
 分享_壞處多過好處蘋果共同創辦人Steve_Wozniak要脫離臉書了

Next
分享_連刪掉的前男友帳號臉書都幫你存好好他教你打開臉書個人資料庫裡面個資多到嚇死人風傳媒 

About the Author

Mark Chang

離不開電腦的宅男

Visitor message

Leave some footprints to prove that you visited me

Recommended reading

Author's other related stories

刪除已上傳至server的檔案

刪除已上傳至server的檔...

a5 管理系統,難免都會遇到要更新或刪除已經上傳到server的檔案。 總不能只是重新上傳卻又不把舊...

使用jQuery阻止input直接按Enter就送出表單

使用jQuery阻止inpu...

使用表單是傳送資料裡經常會用到的方式。 這時當使用者輸入表單後習慣上按下Enter,則會將表單內容送...

jQuery resize取得瀏覽器目前視窗寬度

jQuery resize取...

pexelsphotokeyboard5 在使用CSS調整RWD顯示時~ 也可以使用javascri...

Please select an option

error

Hi, thank you for your participation, but you cannot vote repeatedly~

Join innstory now and start recording your story.

"Innstory" is a place to store stories. We are committed to becoming a warm platform. Deepening the bonds between people is our direction.
We are convinced that the blockchain between people is not just a cold calculation. Join us now.

Wrong format