【问题标题】:How can I get Flash to share the browser cookies/session?如何让 Flash 共享浏览器 cookie/会话?
【发布时间】:2023-03-06 11:38:01
【问题描述】:

我正在构建一个基于 PHP 的网络应用程序,并且正在集成一个基于 Flash 的图表引擎。 Flash 图表需要对其数据进行 AJAX 请求。此请求失败,因为它被视为新的用户代理并且不包含用于识别它的 PHP 会话 cookie。因此,它被重定向到登录页面。

我已经阅读了一些技巧来完成这项工作,包括在查询字符串上提供会话 ID,但这会带来安全漏洞。如何让 Flash 和 PHP 自动共享基于 cookie 的会话状态并保持安全?

【问题讨论】:

    标签: php flash session


    【解决方案1】:

    在 IE 中它会天真地工作。在 Firefox 中,实现此目的的唯一方法是将会话 ID 发布到 flash 脚本(即 php 处理器)中,并让它从中恢复会话。

    【讨论】:

    • 您究竟是如何发布 id 的?我想你可以将它包含在对象/嵌入参数中,但它会作为 GET 而不是 POST 发回。
    【解决方案2】:

    如果会话 cookie 启动得足够早,那么应该没问题。我在 JavaScript AJAX 和 Flash 请求之间共享 cookie 时遇到了类似的问题(如果您也想调用该 AJAX,请继续 :-)),我们通过确保 JavaSCript 完成早期启动 cookie 的请求来解决它们足以让当 Flash 发送请求时,浏览器已经有了会话 cookie。

    同时确保将 cookie 路径设置为“/”也是一个好主意。

    话虽如此,如果你不能让它工作——正如俗话说的那样——你可以使用 JavaScript AJAX 调用将信息存储在 HTML DOM 中,然后使用 ExternalInterface 调用从 Flash 对象中获取它。但请确保在您的 Flash 对象上至少设置“allowScriptAccess=sameDomain”

    【讨论】:

      【解决方案3】:

      您应该知道,在 Cookie: 标头或 GET HTTP 指令的参数字段中传输会话 ID 没有不同的安全性。

      【讨论】:

      • 除了如果您在查询行中传输它,它可能会在浏览器历史记录和网络服务器日志中可见(可能是途中的任意第三方代理)。它也可能通过 Referer 标头进入完全不相关的站点。
      • 如果这是所需的行为,则应编写软件,因此这不是一个有效的问题。这只是糟糕的工程。
      【解决方案4】:

      使用ExternalInterface 与 Flex 图表对话。一些浏览器相关信息也可以通过LoaderContextBrowserManager 类传递。深入研究一下 AS3 文档。

      【讨论】:

        【解决方案5】:

        您可以尝试将一个 session_id 和第二个参数发送到 php 2 参数,后者是一个密钥,它结合了来自客户端(前 ip)的一些信息,并使用存储在服务器上的密钥和来自闪存的请求对其进行加密检查以查看第二个参数是否与客户端请求匹配,这样如果有人试图进行会话窃取,他们就无法做到,因为他们不会匹配第二个参数

        【讨论】:

          猜你喜欢
          • 2015-08-22
          • 2011-12-19
          • 2021-01-02
          • 1970-01-01
          • 2013-02-04
          • 1970-01-01
          • 2011-07-18
          • 2011-09-12
          • 2015-10-05
          相关资源
          最近更新 更多