gpt4 book ai didi

php - 检查安全 cookie 并在 HTTPS 模式内重定向非 HTTPS 父级

转载 作者:行者123 更新时间:2023-11-28 10:17:03 25 4
gpt4 key购买 nike

我在混合网站的 HTTP/HTTPS 部分时遇到了问题,这有点难以解释。基本上,该网站的结构如下:

  • 主页和公共(public)内容页面通过 HTTP 发送
  • 所有需要授权的页面均通过 HTTPS 发送

我正在向网站添加“记住我”功能,其中 session key 通过安全 cookie 发送给用户。这对于网站的授权区域 (HTTPS) 非常有用 - 我可以删除用户的 PHP session ,当我再次访问这些授权页面时,它将由安全 session key cookie 重新创建。

我的网站页面上有一个登录按钮,该按钮未加密发送。此登录按钮会启动一个模式窗口,该模式窗口的内容通过 HTTPS 传输。安全 session key cookie 是在对此模式窗口的请求中发送的,因为它是通过安全连接进行的。 如果检测到此 session key cookie,我需要关闭模式窗口并将父页面重定向到网站的授权部分。

// this script running on https://somewhere.com/account/ in an iframe
// whose parent is http://somewhere.com/ (non-HTTPS)
<?php if ( $already_authorized ): ?>
<script type="text/javascript">
$(document).ready(function redirectParent() {
parent.jQuery.fancybox.close();
parent.window.location.href = 'https://somewhere.com/account/';
});
</script>
<?php endif ?>

不过,我遇到了跨域脚本预防问题,因为从 https://somewhere.com/account/ 加载的模式窗口正在尝试在其上执行 JS 函数父窗口,http://somewhere.com

<小时/>

所以,我的困境简而言之:

  • 不安全的页面包含指向模式登录窗口的链接,该窗口通过 HTTPS 加载
  • 模态登录窗口可以检查 session key cookie,因为它是通过安全连接发送的
  • 模态登录窗口无法告诉其父窗口使用 JS 关闭,因为它是通过不同的协议(protocol)加载的
  • 模式登录窗口无法通过不安全的连接加载。这将使 JS 能够访问父级,但安全 cookie 将不可用。

如果我的问题足够有意义,我想知道:有什么办法可以解决这个令人沮丧的问题吗?或者我最终会通过 HTTPS 加载整个网站(公共(public)部分和私有(private)部分)吗?

最佳答案

我找到了解决办法!它可能不是最优雅的,但据我所知,它可以工作并保持相同级别的安全性。

  • 登录时,存储两个 Cookie。
    1. 包含 session key 的安全 cookie
    2. 存储“授权”状态的不安全 Cookie:truefalse
  • 在不安全的页面上,检查不安全的 Cookie。
    • 如果不安全 Cookie 的值为 true假设用户已获得授权并显示安全“我的帐户”页面的链接(非模式) em>)。
    • 一旦用户通过 HTTPS 访问“我的帐户”页面,就会检查安全 Cookie。如果一切正常,页面将正常显示。如果 session key 不存在或未验证,两个 Cookie 都会被删除,并且用户会被重定向到主页。
  • 在安全页面上,该过程保持不变 - 对安全 session key Cookie 进行检查。
  • 注销时,使两个 Cookie 失效。

关于php - 检查安全 cookie 并在 HTTPS 模式内重定向非 HTTPS 父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com