安全上传文件

我的文件上传系统在我的PHP项目。

我上传的内容是:

1)检查文件扩展名和文件MIME类型。

2)如果扩展和MIME类型是允许的类型,我将文件保存在public_html目录之外,然后我给用户下载文件的机会:

     if (file_exists($file_path)) {
            header('Content-Description: File Transfer');
            header('Content-Type: some mime type');
            header('Content-Disposition: attachment; filename=somefilename');
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($file_path));
            readfile($file_path);
     }

问题:这个上传文件的步骤,是否安全? 如果没有,还有什么可以补充的,为了提高上传文件的安全性?

谢谢。


  • 检查MIME类型根本没有帮助,因为可以制作这些信息。
  • 这取决于您如何检查文件扩展名以及您正在处理的信息。 尝试使用“白名单”作为文件扩展名而不是“黑名单”。
  • 将它移到public_html之外是个好主意,也可以尝试重命名该文件并将扩展名添加到该文件中。
  • 对压缩文件要格外小心,你最终可能会遇到一些zipbomb或类似的东西。
  • 如果您要对其执行某种操作(如调整图像大小),请注意文件。 请记住,您正在处理与您的代码交互的用户输入内容,并且可能会利用您的代码(例如,代码执行漏洞)。
  • 也请尝试阅读本文,它会给你一些有用的信息,你可能以前没有遇到困难。

    链接地址: http://www.djcxy.com/p/45671.html

    上一篇: Secure uploading file

    下一篇: How to check file MIME type with javascript before upload?