我想知道是否有办法通过 .htaccess 在 CentOS 中禁止存档文件类型(例如:zip、rar 等)。我目前正在使用不安全的上传脚本,作为临时修复,我想阻止人们上传包含文件集合的任何类型的文件。
或者更好的是,我只想允许通过.htaccess 上传特定文件(jpg 等)。这样,它仅限于一个帐户,而不是整个服务器。
我想知道是否有办法通过 .htaccess 在 CentOS 中禁止存档文件类型(例如:zip、rar 等)。我目前正在使用不安全的上传脚本,作为临时修复,我想阻止人们上传包含文件集合的任何类型的文件。
或者更好的是,我只想允许通过.htaccess 上传特定文件(jpg 等)。这样,它仅限于一个帐户,而不是整个服务器。
您应该检查要上传的文件。
$upld = $_FILES['userfile']['tmp_name'];
$mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE),$upld);
从 FILEINFO 检查 mime 类型
if($mime=='image/gif'||$mime=='image/png'||$mime=='image/jpeg'){
$info = getimagesize($upld);
$tmp = explode('/',$info['mime']);
检查有效图像。从 GD 打开
$im = call_user_func_array('imagecreatefrom'.$tmp[1],$upld);
if($im){
# Its valid image, no error
}else{
# Its not valid or damaged images
}
# Its not image (zip, mp3, txt & etc.)
}
您应该在上传期间检查文件的文件扩展名并丢弃任何不需要的文件。
此外,您可以使用finfo_file()方法检查文件的类型。
编辑:
此外,如果您需要更高的安全性,您可以调用imagecreatefromgif()或imagecreatefromjpeg()或imagecreatefrompng()将尝试从上传的文件创建图像资源。这将使您摆脱 Procyon82 提到的问题。
示例取自Schraalhans Keukenmeester的第 4 条评论
if (!$img = @imagecreatefromgif($uploadedfilename)) {
trigger_error('Not a GIF image!',E_USER_WARNING);
// do necessary stuff
}
除非文件名在 URI 或查询字符串本身中,否则 htaccess 不会帮助您。事实上,您不应该试图为应用程序问题寻找传输解决方案。您需要在上传脚本中解决此问题。
htaccess 文件对上传文件没有任何作用。