Php 如何禁止CentOS上的zip文件?

Php 如何禁止CentOS上的zip文件?,php,.htaccess,file-upload,ssh,centos,Php,.htaccess,File Upload,Ssh,Centos,我想知道是否有办法通过.htaccess禁止CentOS中的归档文件类型(例如:zip、rar等)。我目前正在使用一个不安全的上传脚本,作为临时修复,我想阻止人们上传任何类型的包含文件集合的文件 或者更好的是,我只允许通过.htaccess上传特定的文件(jpg等)。这样,它只限于一个帐户,而不是整个服务器。除非文件名在URI或查询字符串本身中,否则htaccess不会帮助您。事实上,您不应该试图为应用程序问题找到传输解决方案。您需要在上载脚本中修复此问题 htaccess文件对上载文件没有任何

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


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

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


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

您应该在上载过程中检查文件的文件扩展名,并丢弃任何不需要的文件

此外,您可以使用方法检查文件的类型

编辑:

此外,如果您需要更多的安全性,您可以调用或,或尝试从上载的文件创建图像资源。这将使您免于Procyon82提到的问题

示例取自第4条评论,由


你应该检查上传的文件

$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.)      
}

不。保护脚本。通过SSH进行服务器设置如何?@Procyon82不,您需要修复脚本,不存在“服务器设置”来阻止脚本创建具有特定名称(以.zip结尾)的文件。据我所知,您仍然可以在允许的文件中隐藏有害代码。我看对了吗?
  $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.)      
}