php session.use_trans_sid - PullRequest
       21

php session.use_trans_sid

3 голосов
/ 17 ноября 2009

Мне неясно, что означает и использует php's session.use_trans_id.

В онлайн-документации написано:

опция времени выполнения session.use_trans_sid включены, относительные URI будут изменены на содержать идентификатор сессии автоматически. Означает ли это, что ВСЕГДА будет добавлять идентификатор сессии? Или только когда куки не работают?

Будет ли он автоматически добавлен в вызовы 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 ]

2 голосов
/ 02 июня 2013

«Означает ли это, что ВСЕГДА будет добавлять идентификатор сеанса? Или только когда файлы cookie не работают?»

  • Только когда куки не работают. Кроме того, если session.use_trans_sid и session.use_cookies равны 1, session.use_only_cookies решает: 1 отключит перезапись URL. Смотрите эту прекрасную статью .

«Будет ли он автоматически добавлен в вызовы javascript window.location или ajax?»

  • Нет. PHP не знает, что такое Ajax, он просто перезаписывает URL-адреса literal в своем буфере вывода страницы (обратите внимание, что любые сценарии связанные прерывают сеанс, как только они имеют жестко закодированный URL-адрес сайт).

"Если вы не используете PHP 4.2.0 или новее, вам нужно включить его вручную"

  • Это (действительно странно) означало перекомпиляцию PHP <4.2. Для PHP5 он просто отключен <em>в конфигурации (по причинам, указанным вами в php.ini).

"Кроме того, эта функция НЕ ОБЯЗАТЕЛЬНА для работы с отключенными файлами cookie?"

  • Да, это так. (Если вы не предоставите какое-либо специальное решение Javascript + PHP для какого-то особенного случая с ограниченным удобством использования и щедрым компромиссом.)
2 голосов
/ 30 мая 2012

Вы можете пойти с этим:

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

2 голосов
/ 08 апреля 2013

Риск состоит в том, что кто-то может дать вам ссылку с помощью sid, и вы будете использовать эту ссылку для входа в систему, и у них будет активная сессия, где вы вошли в систему.

1 голос
/ 17 ноября 2009

если вы включите «use_trans_sid», то идентификатор сеанса каждый раз присоединяется к URL. Я не уверен, что происходит по запросу ajax, но я думаю, что он будет прикреплен к.

И да, вам нужен trans_sid, когда у пользователя отключены куки, но это небезопасно (подумайте о том, что кто-то смотрит на ваш экран и записывает ваш идентификатор сессии? :-)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...