如何在CentOS上禁止zip文件?

时间:2013-09-20 17:56:51

标签: php .htaccess file-upload ssh centos

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

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

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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.)      
}

答案 2 :(得分:0)

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

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