限制PHP中的文件下载

kam*_*lot 0 php apache security zend-framework

所以假设我的服务器位于http://www.example.com

然后我将文件file.exe放在根服务器的files目录中,因此通常可以通过在浏览器中输入该文件来下载该文件

http://www.example.com/files/file.exe

并假设我有一个PHP脚本,首先验证用户,然后将它们重定向到该file.exe下载页面

例如.使用这种方法:

   header('Location: http://www.example.com/files/file.exe');
   exit(0);
Run Code Online (Sandbox Code Playgroud)

什么是最好的方式

1.)通过在And上面键入该URL来防止未经身份验证的用户访问该文件

2.)让PHP脚本仍然能够提供该文件尽管1.)因此经过身份验证的用户应该能够在该位置下载该文件

假设我使用标准LAMP堆栈(我也使用Zend Framework)

Tro*_*ott 6

假设文件不是很大,这应该工作:

  • 将文件放在Web服务器文档根目录之外的某个位置,这样任何Web浏览器都无法直接访问它.

  • 如果经过身份验证,请让您的PHP脚本将文件提供给用户.

  • 请务必使用正确的文件MIME类型header().

如果文件非常大,您可能会遇到一些PHP内存或输出限制.