标头重定向的安全性如何?可以绕过吗?

Posted

技术标签:

【中文标题】标头重定向的安全性如何?可以绕过吗?【英文标题】:How secure is a header redirect? Can it be bypassed? 【发布时间】:2012-03-13 09:21:19 【问题描述】:

标头重定向的安全性如何?据我了解,标头信息指示浏览器做什么。因此,如果将header位置设置为其他位置,是否仍然可以让浏览器登陆初始页面?

if(!$loggedin)
header('Location: someotherpage.php')

如果有人(咳咳)忘记在标题后使用退出命令,还有人会登陆该页面吗?

【问题讨论】:

您可能会发现 addons.mozilla.org/en-US/firefox/addon/noredirect 是一个有用的 Firefox 插件。这将允许您查看真正发送的内容。我见过允许整个管理界面匿名使用的网站(我有权测试),因为它们无需退出即可重定向到登录页面。 谢谢 Cheekysoft。这正是我想要的。 【参考方案1】:

如果有人(咳咳)忘记在标题后使用退出命令,还有人会登陆该页面吗?

当然 - 而不是 land 在该页面上(他已经拥有),忘记 exit() 意味着客户端仍然可以看到在这些行之后发出的任何数据。没有人可以强制客户端在收到Location: 标头后立即离开。该行为完全是自愿的。

【讨论】:

【参考方案2】:

是的,当然。这就是为什么在您想要避免显示非法信息的情况下,在重定向之后应该跟随(或退出)else。如果使用自定义请求,他们可以轻松查看重定向请求之后的内容,这是一个非常标准的安全问题。

【讨论】:

【参考方案3】:

是的。仍然可以登陆该页面,您不能强制“位置”。如果页面抛出“标头已发送”错误,也可能“意外”加载页面的其余部分。 发送header('Location...') 后使用exit; 是一种很好的做法。

查看PHP函数:headers_sent

【讨论】:

以上是关于标头重定向的安全性如何?可以绕过吗?的主要内容,如果未能解决你的问题,请参考以下文章

标头重定向后会执行 PHP 脚本吗?

在 Azure OIDC 注销后,应该将啥内容安全策略标头值重定向回应用程序

使用浏览器应发送到重定向位置的 HTTP 重定向发送信息?

如何从 DIV 重定向并绕过子锚点 href

哪个浏览器不能使用标头位置重定向?

我应该为这个重定向标头 301,谷歌索引将如何受到影响?