【问题标题】:PHP - Allow access from only one domainPHP - 只允许从一个域访问
【发布时间】:2017-02-22 01:22:46
【问题描述】:

我现在有一种奇怪的情况。基本上,我的公司目前正在将指向我们软件最新版本的链接放在门后,但是一旦用户登录,他们就可以将链接分发到这些版本。 30 天免费试用,下落不明。

所以我想阻止访问 URL /downloads/file.extension,甚至完全阻止 /downloads/,除非引用 URL 是 allowed_domain.com

我会喜欢使用.htaccess,但是我们使用的托管服务提供商(WP Engine)在 Nginx 上设置了他们的服务器。不仅如此,我还必须将我的 Nginx 代码发送到 WP Engine 让他们为我实现,这是不切实际的。

因此,我正在寻找仅 PHP 的解决方案,或者我显然没有注意到的 WordPress 插件。

是的,我知道这对我的公司来说是一种非常愚蠢的存储重要文件的方法,但我现在需要解决这个问题,直到他们想出更好的方法。

【问题讨论】:

  • 是的,我知道我应该在 public_html 之外托管这些类型的文件,并利用 PHP 来发送它们,但是 WP Engine 并没有让我访问真正的根目录。
  • 我相信 Wordpress 只会为不存在的文件重写 URI。因此,如果文件存在于面向公众的目录中,我认为您无法采取任何措施来阻止仅使用 PHP 进行下载。
  • @KodosJohnson 我不想重写 URL。我只是想重定向,除非它们来自特定的 URL。
  • 我知道。我想说的是,您编写的任何 PHP 代码都无法拦截对文件的请求。如果文件是公开的,那么它就是公开的,并且您用 PHP 编写的任何内容都无法阻止它。
  • 因此,阻止访问这些文件的唯一方法是通过 nginx 代码或将它们放在您已经提到的 public_html 之外。只是出于好奇,为什么将您的 nginx 代码发送给托管服务提供商是不切实际的?您只需进行一项更改,即可阻止通过 PHP 代码访问任何文件。

标签: php wordpress nginx


【解决方案1】:

很遗憾,您无法按照您的描述进行操作。这是因为当有人试图从该站点访问文件时,Web 服务器将首先检查它是否存在,如果存在,它将立即提供该文件。它不经过任何 PHP 代码。因此,您不能编写任何 PHP 代码来拦截该请求并阻止它。

【讨论】:

    【解决方案2】:

    您可以使用我正在使用的这种方法。 享受吧。

    您需要列出这些 IP 地址。

    <?php $allow = array("201.168.0.1", "456.789.123", "789.123.456"); //allowed IPs
    
    if(!in_array($_SERVER['REMOTE_ADDR'], $allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $allow)) {
    
        header("Location: http://yourdomain.com/index.php"); //redirect
    
        exit();
    
    } ?>
    

    【讨论】:

    • 感谢您的快速回答。这看起来或多或少是我正在寻找的,但我是一个前端人员,所以在我测试你的代码之前我有一些非常基本的问题:我可以把它和所有其他的一起放在 PHP 文件中吗我的 PHP 代码?
    • @JesseRogers,基本上你能不能把这个文件变成 index.php。因此,当用户触发www.yourdomain.com/index.php 时,它将检查用户 IP 地址,然后重定向到您的 php.ini 文件。也许您可以将 php 命名为 www.yourdomain.com/main.php 之类的其他名称,这样只有具有这些 IP 的用户才会重定向,而其余的则不会。如果有帮助,请单击它作为答案:D
    • 如果/当我能得到你的答案时,肯定会奖励你答案,因为你先回答。抱歉,我只是需要很多后端代码方面的帮助,哈哈。另一个问题——location: http://yourdomain.com/index.php。如果用户不是来自允许的 IP,那是他们被发送到的地方吗?还是我要保护的 URL?
    • @JesseRogers,这是允许的 IP。只有当他们的 IP 在列表中时,他们才会被重定向。不在列表中的用户只会看到一个空白页面,或者您可以将他们重定向到另一个站点。此脚本用作过滤器。
    • 现在脚本正在执行某些操作,但它会将我的整个站点重定向到我在header() 中指定的 URL。如果我把它放在我要保护的文件夹内的 PHP 文件中,那会起作用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2014-08-10
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    相关资源
    最近更新 更多