0

我想知道是否有办法通过 .htaccess 在 CentOS 中禁止存档文件类型(例如:zip、rar 等)。我目前正在使用不安全的上传脚本,作为临时修复,我想阻止人们上传包含文件集合的任何类型的文件。

或者更好的是,我只想允许通过.htaccess 上传特定文件(jpg 等)。这样,它仅限于一个帐户,而不是整个服务器。

4

3 回答 3

1

您应该检查要上传的文件。

$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.)      
}
于 2013-09-20T18:37:46.607 回答
1

您应该在上传期间检查文件的文件扩展名并丢弃任何不需要的文件。

此外,您可以使用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
}
于 2013-09-20T18:14:40.590 回答
0

除非文件名在 URI 或查询字符串本身中,否则 htaccess 不会帮助您。事实上,您不应该试图为应用程序问题寻找传输解决方案。您需要在上传脚本中解决此问题。

htaccess 文件对上传文件没有任何作用。

于 2013-09-20T17:59:59.467 回答