允许上传和浏览,但不允许下载


Allowing upload and browse but disallowing download

我认为这个问题应该很简单,但是在网上搜索后,我找不到答案,所以我决定在这里问。

我的网站上有一个使用 php 的文件上传器。上传文件的文件夹有 777 chmod。我还有一个 php 脚本来列出该文件夹中的文件。我需要的是允许php上传和浏览该文件夹中的文件,但不允许人们这样做。我想象的唯一解决方案是将该文件夹分配给另一个与默认值不同的用户,因此我稍后可以在 filezilla 中 chmod 并只允许所有者执行此操作,这样人们就会通过 php 脚本的输出看到文件,但如果他们导航到该文件夹,则不会。

我使用 Debian,apache2。我想知道我能做什么。

为了使它变得shor,我的目标是:允许php上传,读取,写入和执行该文件夹中的文件,但不允许客户端,除非他们使用我的php脚本。

提前致谢

把你正在谈论的所有文件放在它们自己的目录中。将.htaccess文件添加到该目录。.htaccess的内容应deny from all

这将阻止任何用户手动访问文件,因为访问将被阻止。您的 PHP 脚本仍然可以浏览文件的内容,并将其作为具有正确内容类型的附件提供。

有关如何在 PHP 中提供文件以供下载的更多信息,请阅读以下内容:https://serverfault.com/questions/316814/php-serve-a-file-for-download-without-providing-the-direct-link

包括 Web 服务器在内的所有服务都在安全上下文中运行,该上下文是操作系统中的一个帐户,例如 apache 开始使用 apache 组中的 apache 用户。更改模式并将所有者更改为此用户和组就足够了。永远不要将目录修改为 777,直到有一个很好的解释。使用此技巧,Web 服务进程只能在该目录中读取、写入和执行。

同样,如果您希望浏览器客户端看不到(读取)该目录的内容,则应拒绝在该目录上列出。我认为默认情况下它是禁用的。