【问题标题】:How to only allow access to a page if it came from a link on my website [duplicate]如果页面来自我网站上的链接,如何仅允许访问该页面[重复]
【发布时间】:2020-09-10 17:30:11
【问题描述】:

在我的网站上,我有以下文件:

  • index.html
  • apple.html
  • banana.html
  • pear.html

index.html 有指向其他三个页面的链接。

阻止访问这 3 个页面 (apple.html/banana.html/pear.html) 的最简单方法是什么,除非他们的推荐人来自我网站上的页面?

我已经看到人们将他们的网站域作为唯一允许的引荐来源的解决方案。这样做的问题是我每次都必须设置我的域,因为我可能会将我的网站上传到 10 个不同的域。

有没有办法对.htaccess 进行编码,以便它自动检测保存它的网站域并将其用作需要允许引用者的引用?

【问题讨论】:

  • 问题不清楚。 “推荐人”是什么意思?
  • 您想只允许site.com/index.html -> site.com/apple.html 而不允许直接site.com/apple.html 访问吗?
  • 另外,当您的意思是“阻止”时。阻塞背后的原因是什么?是为了安全吗?我认为如果不能以某种方式“被黑客入侵”,您将无法以任何方式实现这一目标。如果安全不重要,你可以使用 JS 并将数据存储在sessionStorage
  • 在 RewriteCond 中,您可以访问多个环境变量,例如 HTTP_HOST 或 SERVER_NAME。

标签: php html .htaccess


【解决方案1】:

你可以试试这个。这将检查推荐人是否存在, 之后它将与当前域进行比较。 如果referer不同,则来自外部referer

{
   if ((isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']))) 
       {
          if (strtolower(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)) != strtolower($_SERVER['HTTP_HOST'])) 
            {
             // referer not from this domain. !! Access Denied  
            }
       }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2017-12-11
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多