【问题标题】:Allowing upload and browse but disallowing download允许上传和浏览但不允许下载
【发布时间】:2012-06-11 01:00:20
【问题描述】:

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

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

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

简而言之,我的目标是:允许 php 上传、读取、写入和执行该文件夹中的文件,但不允许客户端,除非他们使用我的 php 脚本。

提前致谢

【问题讨论】:

    标签: php apache2 chmod chown


    【解决方案1】:

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

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

    【讨论】:

    • 我的目录是:mapuploader 所以我应该只是: chown -R apache mapuploader ? :s
    • 我现在明白了。是的。您应该首先将其 chown 给 apache 用户。 chown -R apache apache mapuploader/
    • 我的问题是:我应该让哪个用户成为该文件夹的所有者? “apache”用户不存在,我使用 top 命令查看进程所有者,在 apache2 进程上有两个所有者:root 和 www-data。我尝试使用 www-data 和 www-data,它始终是公开的(就像让每个人都拥有)并且 root php 无法读取它
    • 读取 httpd.conf 文件。用户在其中指定。
    • httpd.conf 文件为空。在 httpd.conf 的同一个文件夹中,我找到了一个文件名“envars”,接下来我在其中找到: export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data 但正如我之前提到的,如果我使用 www-data 就像公开所有者
    【解决方案2】:

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

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

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

    【讨论】:

    • 你能解释一下“他们自己的目录”是什么意思吗?我尝试使用 .htaccess 文件,但我仍然可以从直接链接下载文件。我不想以任何方式提供下载。我只想用 php 脚本(已经完成)显示该文件夹上的内容。但我不希望任何人能够以任何方式下载它们,只是为了上传。
    • 如果您将htaccess 文件放在带有deny from all 的目录中,则该目录中的所有文件都无法再访问。
    • 抱歉坚持,但这对我不起作用,我在我的文件所在的文件夹中添加了 .htaccess,“全部拒绝”不带引号,但我仍然可以从浏览器下载文件
    • 检查您的 apache 设置以确保它正在寻找 htaccess 文件并允许覆盖。详情见这里:forums.devshed.com/apache-development-15/…
    • 很抱歉接受你的回答晚了,启用覆盖需要很长时间,但你的回答对我有帮助,所以我接受了:)谢谢帮助
    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2011-06-15
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多