【问题标题】:Secure html+php form to upload image and vector files?安全的 html+php 表单上传图像和矢量文件?
【发布时间】:2013-04-26 21:50:44
【问题描述】:

我试图做一个接受光栅图形和矢量图形文件的表单(它可以是:jpg、gif、psd、png、svg、eps、ai、cdr、pdf 等),我想避免恶意文件。

我找到的选项:

1) 自定义功能过滤扩展:它似乎并不优雅 - 输入很多扩展,也许我可以忘记一个 - 而且它似乎不太安全。还是这样?

2) getimagesize function 检查文件类型:它不适用于矢量文件 - 至少这是我所理解的。还是我错了?

我没有在网上找到任何关于光栅+矢量文件形式的页面。怎么办?

【问题讨论】:

    标签: php forms file-upload graphics


    【解决方案1】:

    我的解决方案:

    接收上传文件的PHP文件:

    // get the name of original file    
    $imagem = $_FILES['arquivo']['name']; 
    
    // handle string to get extension in lower case. I think it is not a very secure handler.
    $ext = strtolower(substr($imagem, strrpos($imagem, '.') + 1)); 
    
    // array of extensions the validation accepts
    $valid_ext = array ('ai', 'bmp', 'cdr', 'eps', 'gif', 'jpeg', 'jpg', 'pdf', 'png', 'psd', 'svg');    
    
    // checking
    if(in_array($ext,$valid_ext)){ 
         // file is ok. Do something
    }
    

    我尝试先使用file types$file_infofinfo()getimagesize() 检查 Mime,但其中任何一个都运行良好。我在识别 EPS 和 CDR 扩展时遇到了一些问题。它返回“application/octet-stream”,即未知扩展名的 Mime 类型文件。在我的研究中,我了解到是浏览器发送基于操作系统的 Mime 文件类型信息,因此我们遇到了一个问题,即每个表单用户可以为同一扩展名拥有不同的 Mime 文件类型。

    我也明白 PHP 有一个标准文件来识别 Mimes,但我无法处理该文件以添加有关 EPS 和 CDR 文件的信息。

    所以我不得不使用那个字符串检查解决方案。

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 2013-07-16
      • 2012-12-25
      • 2012-10-25
      • 2013-10-18
      • 2011-06-27
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      相关资源
      最近更新 更多