【问题标题】:restrict access to folder from web browser but access only through my website限制从网络浏览器访问文件夹,但只能通过我的网站访问
【发布时间】:2020-06-12 18:10:22
【问题描述】:

我有一个内部网络服务器,上面配置了 ubuntu 和 Apache。 我已授予对 /opt/data_upload 的访问权限,以便我可以使用此目录来保存从 PHP 上传的图像并在 Ajax Get Request 上取回它。

我在 /etc/apache2/apache2.conf 中的 Apache 配置看起来像这样

Alias /data_uploads "/opt/data_uploads/"

<Directory "/opt/data_uploads/">
        Options Indexes FollowSymLinks MultiViews
        Require all granted
        AllowOverride all
        Order allow,deny
        Allow from all
</Directory>

但问题是,当我从浏览器执行http://123.45.67.89/data_uploads 时,每个人都可以完全访问它,这是危险的,任何人都可以看到上传到那里的图像。

为了避免这种情况,我尝试 Require all denied 现在我得到 403 但我所有的 Ajax 获取请求也失败了。

现在我想让我的网站访问它,但如果有人尝试访问 http://123.45.67.89/data_uploads 应该说 403,我该如何解决这个问题?

【问题讨论】:

    标签: php apache2


    【解决方案1】:

    在您的配置中,您可以让每个人都可以访问您的上传目录。

    你必须删除这个,或者只允许你的 IP。

    但在您的情况下,您想要的是允许您的用户上传和下载他们被允许的文件。 这意味着您希望他们的 http 请求能够上传/下载文件。这些 http 请求不会直接访问上传目录,但它们会调用您的 php 应用程序。

    然后是你的 php 应用程序能够上传到这个目录(然后写入这个目录)并从这个目录读取。 为此,您必须使用 chmod 和/或 chown 之类的东西为运行进程的 apache 用户授予读/写权限。

    最后,您必须编写一个能够处理上传和下载调用的 PHP 控制器。该 php 代码将从您的上传目录写入和读取。

    【讨论】:

    • 嗨@Nico,感谢您的回答 选项索引 FollowSymLinks MultiViews 要求所有拒绝 AllowOverride all Order allow,deny # Allow from all 并取得@ 987654321@ 可访问www-data 现在我可以写入它但不能直接用ajax 读取它,我需要编写PHP 控制器来读取它。
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 2012-05-10
    • 2015-11-19
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多