如果有開啟Xoops Protector防護模組的此項功能
假如有惡意檔案被上傳就強制踢出
假如有人企圖上傳一些可以執行的惡意檔案,例如副檔名為.php的檔案,此模組將強制踢出XOOPS。
上傳單一圖檔時會因為檔名有禁用字元而被當成惡意檔案踢出系統,
例如:LINE_ALBUM_2022. 閱讀日活動 4.21-4.22_220805_5.jpg
這樣的檔名就會被踢出去,但這確實是無害檔沒錯
user還需要改檔名才能上傳,實在有點矯枉過正,解決方案就是在接收$_FILES的php檔最頂端(include "header.php")上面加上以下code
//重編檔名防止被防護模組阻擋
//$_FILES['upfile'] 就是表單傳送檔案的name值,可改為自訂值
這樣檔名就會被改成時間戳格式,原始副檔名也會保留,如果user上傳php檔一樣會被Xoops Protector防護模組踢出去,但LINE_ALBUM_2022. 閱讀日活動 4.21-4.22_220805_5.jpg這樣格式的圖檔就能上傳。
另外如果有多個單張圖檔上傳,例如upfile1~upfile2~upfile3,也能用以下批次方法修改
foreach(array_keys($_FILES) as $val){
if(!empty($_FILES[$val]['name']) && !is_array($_FILES[$val]['type'])){
$_FILES[$val]['name']=strtotime(date("Y-m-d H:i:s")).'.'.substr(strrchr($_FILES[$val]['name'], '.'), 1);
}
}
那多圖上傳呢?基本上Protector防護模組只會檢查單張上傳的圖檔名,多檔上傳並不會檢查,所以無上述的情況發生
以上工作心的分享,有需要的朋友參考看看
工作心得分享:徐嘉裕 Neil hsu
留言
張貼留言