我正在构建一个基于PHP的Web应用程序,并且正在集成基于Flash的图表引擎。 Flash图表需要为其数据发出AJAX请求。此请求失败,因为它被视为新的用户代理,并且不包含用于标识它的PHP会话cookie。因此,它会被重定向到登录页面。
我已经阅读了一些黑客来完成这项工作,包括在查询字符串上提供会话ID,但这会打开安全漏洞。如何让Flash和PHP自动共享基于cookie的会话状态并保持安全?
答案 0 :(得分:2)
在IE中它会天真地工作。在firefox中,实现此目的的唯一方法是将会话ID发布到flash脚本(即php处理器)中,并让它从中恢复会话。
答案 1 :(得分:1)
如果会话cookie足够早启动,那么它应该没问题。我在JavaScript AJAX和Flash请求之间共享的cookie有类似的问题(如果你也想调用那个AJAX,请继续:-)),我们通过确保JavaSCript完成早期启动cookie的请求来解决它们当Flash发送请求时,浏览器已经有了会话cookie。
同时确保将cookie路径设置为“/”是一个好主意。
话虽如此,如果你不能让它工作 - 正如dirkgently所说 - 你可以使用JavaScript AJAX调用将信息存储在HTML DOM中,然后使用ExternalInterface调用从Flash对象中获取它。但请确保在Flash对象上至少设置“allowScriptAccess = sameDomain”
答案 2 :(得分:1)
您应该知道,在Cookie:标头或GET HTTP指令的参数字段中传输会话ID没有不同的安全性。
答案 3 :(得分:0)
使用ExternalInterface
与Flex图表对话。某些与浏览器相关的信息也可以通过LoaderContext
和BrowserManager
类传递。深入了解AS3文档。
答案 4 :(得分:-1)
你可以尝试向php 2参数发送一个session_id和第二个,它是一个组合来自客户端(ex ip)的一些信息的密钥,并使用存储在服务器上的密钥加密,并根据flash的请求进行加密检查看第二个参数是否与客户请求匹配,这样如果有人试图通过窃取他们不能进行会话,因为他们不会匹配第二个参数