繁体   English   中英

检查安全cookie并在HTTPS模态中重定向非HTTPS父级

[英]Checking for a secure cookie and redirecting a non-HTTPS parent inside an HTTPS modal

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

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

我在网站上添加了“记住我”功能,在该网站中,会话密钥以安全 cookie的形式发送给用户。 这对网站的授权区域( HTTPS )很有用-我可以为用户删除PHP会话,并且当我再次访问这些授权页面时,它将由安全会话密钥cookie重新创建。

我在网站页面上有一个未加密发送的登录按钮。 该登录按钮启动一个模式窗口,该模式窗口的内容通过HTTPS传输。 安全会话密钥cookie是通过安全连接在此模式窗口的请求中发送的。 如果检测到此会话密钥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/加载的模式窗口正在尝试在其父窗口http://somewhere.com上执行JS函数。 。


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

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

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

我找到了解决方案! 它可能不是最优雅的,但据我所知,它的工作原理和安全级别保持不变。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM