【问题标题】:Trying to understand CakePHP cookies & authentication试图了解 CakePHP cookie 和身份验证
【发布时间】:2011-09-29 18:50:18
【问题描述】:

我正在尝试找出 CakePHP cookie 并满足我稍微不寻常的身份验证要求。

我有一个基于 CakePHP 的数据收集系统,现在它正在与使用 COTS 软件构建的报告系统集成。报告系统需要进行访问控制,除非我想复制两个系统中的所有用户帐户,否则我需要报告系统能够确定用户是否在我的 CakePHP 系统中经过身份验证。

报告系统允许我在客户端的报告请求第一次到达时加载一个 Java 类并执行一个函数。所以我的想法是

  1. 检查传入的报告请求并提取我的 CakePHP 站点用于身份验证/会话识别的 cookie
  2. 从 Java 函数向带有此 cookie 的 CakePHP 站点中的“reportauth”操作发送请求
  3. CakePHP 中的 reportauth 操作然后检查用户是否登录到 CakePHP 站点,并向标识用户角色的 Java 函数返回加密响应

我可以获取 cookie,在请求中发送它,我可以单独在 PHP 和 Java 之间共享加密信息。

但是,当我在我的 Java 请求中使用“新”cookie(我的浏览器在新登录后重复发送到 CakePHP 站点的请求中的 cookie)时,响应显示用户未登录。如果然后我在浏览器中重新加载该站点,则我已注销。我怀疑 cookie 中可能有一些关于用户代理 (?) 的额外信息会导致 Java 来源的请求被抛出并且该会话为了安全而被破坏,但我对系统不够了解。我想我可能会看到 CakePHP 可以防止会话劫持(这通常会让我很高兴)。

谁能告诉我是否有办法解决这个问题?最好是不涉及 CakePHP 中的自定义身份验证组件,因为数据收集站点已经上线,而且我的报告截止日期不远了。

非常感谢任何帮助。

【问题讨论】:

    标签: cakephp authentication cookies session-cookies session-hijacking


    【解决方案1】:

    一种解决方法:

    让 CakePHP 将随机令牌存储在单独的 cookie 中,并作为用户表中的字段。

    然后让Java应用抓取token,发送给cakephp应用获取用户的详细信息。

    或者,让它通过 CakePHP 应用程序本身进行身份验证,并传入 session id 以让 cake 使用正确的会话。注意,该函数的设置需要在 session_start() 被调用之前完成。

    【讨论】:

    • 感谢您的建议,我想我最终会在登录时创建一个单独的加密 cookie,其中包含用户的角色和蛋糕 cookie 的过期时间。
    猜你喜欢
    • 2019-01-28
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2011-01-28
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多