【问题标题】:http header redirect from multiple sources来自多个来源的 http 标头重定向
【发布时间】:2015-07-04 01:06:16
【问题描述】:

这是我的工作设置

主页 --> 论坛页面

您只能从主页访问论坛页面。如果您从其他任何地方访问论坛页面,您将返回主页。

这是我的论坛页面上的代码,它按预期工作

if($_SERVER['HTTP_REFERER']!=='https://homepage.com/folder/mainpage.php')
{
    header('Location: https://homepage.com/folder/mainpage.php');
    exit;
}

但是

如果我从论坛子页面返回,我也会返回主页。 论坛页面如下所示

https://homepage.com/folder/forumpage.php?page=view&entry=16

这就是我想要实现的目标

主页面 --> 论坛页面

所以现在我需要在我的论坛页面上设置另一个规则,该规则也接受来自论坛子页面的返回。由于我无法定义每个子页面,因此我想像这样在末尾添加通配符

https://homepage.com/folder/forumpage.php?page=*

我只是不知道如何使用正确的语法将其添加到上面的第一条规则中以使其正常工作。任何想法都受到高度赞赏。

【问题讨论】:

  • 嗨,既然我是新人,请让我知道我在这里做错了什么,以便对我的问题投反对票吗?

标签: php nginx https http-redirect


【解决方案1】:

我猜你可以这样做

if($_SERVER['HTTP_REFERER']!=='https://homepage.com/folder/mainpage.php' 
    && substr($_SERVER['HTTP_REFERER'], 0, 47) !== 'https://homepage.com/folder/forumpage.php?page=')
{
    header('Location: https://homepage.com/folder/mainpage.php');
    exit;
}

不过,这个设置让我很担心。我不会依赖$_SERVER['HTTP_Referer'];浏览器不保证正确设置或根本不设置。我特别担心这个问题被标记为安全性,因为这没有提供真正的安全性。

【讨论】:

  • 感谢您的回答 - 这当然不是安全解决方案。它只是我已经采取的其他措施之上的一个附加层。所以你是对的 - 安全徽章具有误导性,将被删除
  • 你能发布substr($_SERVER['HTTP_REFERER'], 0, 47)返回的内容吗?
  • 我的 php 错误日志读取 PHP Notice: Undefined index: HTTP_REFERER in 并使用 susbtr 引用行号
  • 这对我来说没有意义。从技术上讲,可能是浏览器没有发送引用数据,但如果 $_SERVER['HTTP_REFERER'] 未定义,您现有的代码也不应该工作。这两个变量名是否相同?
  • 这里是完整的代码if($_SERVER['HTTP_REFERER']!=='https://example.com/myfolder/gate.php' && substr($_SERVER['HTTP_REFERER'], 0, 47) !== 'https://example.com/myfolder/subfolder/page.php?page=')
猜你喜欢
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 2017-06-17
  • 1970-01-01
  • 2022-10-15
  • 2015-11-28
相关资源
最近更新 更多