【发布时间】:2009-05-06 03:27:49
【问题描述】:
我正在尝试让我的脚本使用 url 会话 ID 而不是 cookie。 以下页面未将 url 中的变量作为会话 id。 我一定是错过了什么。
首页http://www.website.com/start.php
ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
session_start();
$session_id = session_id();
header("location: target.php?session_id=". $session_id );
下一页 - http://www.website.com/target.php?session_id=rj3ids98dhpa0mcf3jc89mq1t0
ini_set("session.use_cookies",0);
ini_set("session.use_trans_sid",1);
print_r($_SESSION);
print(session_id())
结果是不同的会话 ID,会话为空白。
数组 ( [debug] => no ) pt1t38347bs6jc9ruv2ecpv7o2
【问题讨论】:
-
您是否在使用某种 PHP 框架?普通 PHP 不会自动解释查询字符串中的任何内容,因此 $_SESSION 和 $_GET['session_id'] 之间没有隐含的联系。
-
请记住,将会话 ID 放在 url 中可能意味着它将通过 HTTP 引荐来源网址泄露...
-
我们有自己的专用 apache 服务器和 php。它不共享。这会带来安全风险吗?
-
是的。引荐来源网址问题是指从您的服务器到某个外部服务器的链接。当有人点击该链接时,外部服务器将收到他们之前所在的网址 - 包括会话 ID。
-
如果有人将地址从浏览器复制粘贴到电子邮件中,也可能会泄露。