php session.use_trans_sid

Я не совсем понимаю смысл и использование php session.use_trans_id.

В онлайн-документации говорится:

включена опция run-time session.use_trans_sid, относительные URI будут изменены, чтобы автоматически содержать идентификатор сеанса. Означает ли это, что ВСЕГДА будет добавлять идентификатор сеанса? Или только когда файлы 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?

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

 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

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

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

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

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

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

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

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

«Кроме того, разве эта функция НЕОБХОДИМО обрабатывать пользователей с отключенными cookie?»

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

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

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