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

时间:2012-06-06 23:53:57

标签: php apache2 chmod chown

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

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

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

为了实现这一目标,我的目标是:允许php在该文件夹中上传,读取,写入和执行文件,但不包括客户端,除非他们使用我的PHP脚本。

提前致谢

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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