php session.use_trans_sid

时间:2009-11-17 01:08:09

标签: php session

我不清楚php的session.use_trans_id的含义和用法。

在线文档中,它说:

  

运行时选项   session.use_trans_sid已启用,   相对URI将更改为   自动包含会话ID。   这是否意味着它总是会添加会话ID?或者只有当cookie不起作用时?

是否会自动将其添加到javascript的window.location或ajax调用?

另外,在php.ini文件中,它说:

trans sid support is disabled by default.
Use of trans sid may risk your users security.
Use this option with caution.
 - User may send URL contains active session ID
   to other person via. email/irc/etc.
 - URL that contains active session ID may be stored
   in publically accessible computer.
 - User may access your site with the same session ID
   always using URL stored in browser's history or bookmarks.
 http://php.net/session.use-trans-sid

我很困惑,在线文档说Unless you are using PHP 4.2.0 or later, you need to enable it manually。那么为什么默认会禁用它? (我正在使用php 5)。

此外,这个功能是否必须处理禁用cookie的用户?

4 个答案:

答案 0 :(得分:2)

你可以这样做:

if(isset($_COOKIE['session_name'])){
            ini_set("session.use_trans_sid",false);
            session_start();
            ///////////////////
            //any hard tracking code or hard work goes here
            // like $_SESSION['msisdn']="9455366212";
            ///////////////////
            $_SESSION['cookie_support']=1;
}else{
            ini_set("session.use_trans_sid",true);
            session_start();
            $_SESSION['cookie_support']=0;
}

如果用户尝试登录,请先检查$_SESSION['cookie_support']; 尽量避免与cookie_support=0

进行任何敏感互动

答案 1 :(得分:2)

风险是有人可以给你链接sid并且你会使用该链接登录,他们会在你登录的情况下进行活动会话。

答案 2 :(得分:2)

“这是否意味着它总是会添加会话ID?或者只有当cookie不起作用?”

  • 仅在Cookie不起作用时。另外,如果session.use_trans_sidsession.use_cookies都是1,则session.use_only_cookies决定:1将禁用网址重写。见this nice article

“会自动将其添加到javascript的window.location还是ajax调用?”

  • 否。 PHP不知道Ajax是什么,只是在其页面输出缓冲区中重写 literal URL(注意任何链接的脚本如果有硬编码的URL就会中断会话到网站)。

“除非您使用的是PHP 4.2.0或更高版本,否则需要手动启用它”

  • 那(确实令人困惑)意味着重新编译 PHP< 4.2。对于PHP5,它只是在配置中禁用了(原因是你引用了php.ini)。

“此外,这个功能是否必须处理禁用cookie的用户?”

  • 是的,确实如此。 (除非你为一些非常特殊的案例提供一些自定义的Javascript + PHP解决方案,其中包括残缺的可用性和慷慨的权衡。)

答案 3 :(得分:1)

如果启用“use_trans_sid”,则会话ID每次都附加到URL。我不确定ajax请求会发生什么,但我认为它会被附加到。

是的,当用户禁用cookie时你需要trans_sid,但它有点不安全(想想有人正在你的屏幕上查看并记下你的会话ID?:-))。