iframe中的持久session_id

时间:2014-03-02 11:08:39

标签: php ajax session iframe

我有一个独立运行的php系统,但嵌入iframe时却没有 它嵌入在另一个域的页面中,包括:
main.php从iframe-URL中删除一个参数,在MySQL中查找,设置一个会话变量并绘制一个网格 然后,使用ajax,尝试获取要在网格中显示的数据 - 但是ajax.php没有相同的session_id()?!?
在随后的ajax调用数据(更新网格)中,session_id()不断变化!

回顾一下:我所有的PHP都在SAME iframe中 - 没有XS麻烦..?
在所有正确的位置都有一个session_start()(它独立工作) session_save_path()在main.php和ajax.php中是相同的(并且它们在同一个目录中)
我已经看过并试过不同版本的标题('P3P:CP =“CAO PSA OUR”') - 毫无结果:(

找到它:我的浏览器不允许使用第三方Cookie - 包括会话cookie!
但这不是错误的 - 没有跨域共享cookie(它留在iframe内)? - 仍然..它是另一个域而不是用户在URL中要求的域...嗯...狗屎。

1 个答案:

答案 0 :(得分:1)

如前所述,问题是浏览器阻止(不允许)第三方Cookie (也就是说,忽略不是从主(可见)URL后面的服务器发出的cookie)

有一种方法可以绕过这个安全功能:google“P3P”
- 但这在浏览器(Chrome)中并不可靠。

我的解决方案是将session_id保存在javascript中,并将其作为额外参数附加到所有ajax调用中,
使我能够在ajax.php中选择相关的会话:session_id($ _POST ['sessID']); session_start();

这个解决方案确实让恶意用户更容易使用session_id - 因为它现在可以单独使用javascript(修改)(比修改cookie更容易)...

我想听听人们对这种“增加的脆弱性”的看法?