Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Литература по сессиям и кукисам
 
 автор: Владимир55   (19.02.2009 в 20:34)   письмо автору
 
 

Как я понял из анализа результатов проведенного по форуму поиска, вопрос о том, что происходит с сессией при неработающих куки, возник не только у меня.

Тех поддержка ВДС, кудая обратился за советом, дала вот такие небезинтересные ссылки, довольно подробно освещающие этот вопрос:
http://www.spravkaweb.ru/php/managfun/session/cookies
http://php.spb.ru/php/session.html

По существу, если делать ссылки вида
echo '<p><a href="889.php?' . SID . '">Ссылка</a></p>';

то проблема влияния отключения куки на сессию исчезает. Причем, если куки включены, то идентификатора сессии даже не видно в адресной строке.

Есть ли смысл взять за правило строить ссылки только таким образом?

  Ответить  
 
 автор: BinLaden   (19.02.2009 в 20:44)   письмо автору
 
   для: Владимир55   (19.02.2009 в 20:34)
 

Вы что, ни в коем случае: в адресной строке будет некрасивый знак вопроса: «http://.../889.php?» при включенных cookies.

  Ответить  
 
 автор: cheops   (19.02.2009 в 20:49)   письмо автору
 
   для: Владимир55   (19.02.2009 в 20:34)
 

SID не с проста в cookie поместили, дело в том, что URL с SID, указанный на каком-нибудь ресурсе, позволял зачастую воспользоваться аккаунтом неосторожного пользователя (даже если сессия имела ограничение по времени, находились шустрые злоумышленики). Причем поисковые системы зачастую слишком быстро индексируют страницы, позволяя автоматизировать процесс поиска таких ссылок. Собственно все тенденции последних лет сводились к тому, чтобы убрать SID (который строго говоря добавлялся автоматически к ссылкам, необязательно использовать его в echo) из GET-параметров в cookie, которые не индексируются и которые невозможно передать случайно, если сайт не содержит XSS-инъекции.

  Ответить  
 
 автор: Владимир55   (19.02.2009 в 21:09)   письмо автору
 
   для: cheops   (19.02.2009 в 20:49)
 

Однако, если я правильно понял, когда сайт посещает посетитель с выключенными куки, то содержимое SID все равно выводится в адресную строку. Причем, выводится автоматически.

И не факт, что поисковики индексируют сайт со включенными куки (если так можно сказать).

  Ответить  
 
 автор: ddhvvn   (19.02.2009 в 21:57)   письмо автору
 
   для: Владимир55   (19.02.2009 в 21:09)
 

>Однако, если я правильно понял, когда сайт посещает посетитель с выключенными куки, то содержимое SID все равно выводится в адресную строку. Причем, выводится автоматически.

Насколько я помню, это зависит от настроек =)

  Ответить  
 
 автор: Владимир55   (19.02.2009 в 22:03)   письмо автору
 
   для: ddhvvn   (19.02.2009 в 21:57)
 

Вроде бы да, зависит. Но зависимость очень простая: либо вы разрешаете передавать идентификатор в адресе, либо сессии не работают.

  Ответить  
 
 автор: Loki   (19.02.2009 в 22:35)   письмо автору
 
   для: Владимир55   (19.02.2009 в 22:03)
 

>ибо вы разрешаете передавать идентификатор в адресе, либо сессии не работают.
вариант "либо передается через куки" даже не рассматривается?

  Ответить  
 
 автор: Владимир55   (19.02.2009 в 22:55)   письмо автору
 
   для: Loki   (19.02.2009 в 22:35)
 

Мы же говорим о случае, когда куки запрещены.

  Ответить  
 
 автор: Loki   (19.02.2009 в 23:46)   письмо автору
 
   для: Владимир55   (19.02.2009 в 22:55)
 

Мне кажется что Вы боретесь с ветряными мельницами: на эти 0.02% аудитории можно легко наплевать слюнями. Отключил куки - ну и сам себе злобный буратино.

— С позволения вашего величества, я этого письма не писал. Там нет моей подписи.
— Тем хуже . Значит , ты что—то худое задумал . А не то подписался бы сам, как все честные люди. Вина доказана!
Льюис Кэрролл

  Ответить  
 
 автор: Владимир55   (20.02.2009 в 12:33)   письмо автору
 
   для: Loki   (19.02.2009 в 23:46)
 

"Мне кажется что Вы боретесь с ветряными мельницами: на эти 0.02% аудитории можно легко наплевать... "

Отчасти это так - пользователей с отключенными куки у меня 1.1 процента. Их интересы можно и не учитывать, но проблема в том, что от таких посетителей искажается общая статистика работы скрипта, который я уже почти сделал: переход со страницы на страницу засчитывается за приход нового посетителя, т.е. один бродящий по сайту даст десятки неверных записей. Вылезают и другие дефекты - форма ввода информации учитывается как самостоятельная безымянная страница, и т.п. Так что лакировка в моём случае неизбежна.

  Ответить  
 
 автор: Loki   (20.02.2009 в 13:45)   письмо автору
 
   для: Владимир55   (20.02.2009 в 12:33)
 

Ну и пусть в этих 1.1% случаев sid передается через get... это же стандартная настройка: если куки включены - храним в куках, если нет - в url. Ну либо всех железно обязать включить куки, как это сделано на некоторых сайтах.

  Ответить  
 
 автор: Trianon   (19.02.2009 в 22:55)   письмо автору
 
   для: Loki   (19.02.2009 в 22:35)
 

>>>>Однако, если я правильно понял, когда сайт посещает посетитель с выключенными куки, то содержимое SID все равно выводится в адресную строку. Причем, выводится автоматически.
>>>Насколько я помню, это зависит от настроек =)
>>Вроде бы да, зависит. Но зависимость очень простая: либо вы разрешаете передавать идентификатор в адресе, либо сессии не работают.
>вариант "либо передается через куки" даже не рассматривается?

через выключенные?

  Ответить  
 
 автор: cheops   (20.02.2009 в 00:38)   письмо автору
 
   для: Владимир55   (19.02.2009 в 21:09)
 

>Однако, если я правильно понял, когда сайт посещает посетитель с выключенными куки, то
>содержимое SID все равно выводится в адресную строку. Причем, выводится автоматически.
Можно и так настроить.

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

  Ответить  
 
 автор: а-я   (20.02.2009 в 01:20)   письмо автору
 
   для: cheops   (20.02.2009 в 00:38)
 

а если в сессии хранить IP-сеть и Броузер пользователя.

и сразу после старта сессии проверять он ли хозяин.

так будет меньше краж...?

  Ответить  
 
 автор: cheops   (20.02.2009 в 02:00)   письмо автору
 
   для: а-я   (20.02.2009 в 01:20)
 

Конечно, но проще использовать cookie, а там где их использовать нельзя, например, в мобильных решениях - IP-адрес в подавляющем большинстве случаев одинаковый (NAT) и юзерагент через одного повторяется.

  Ответить  
 
 автор: Владимир55   (20.02.2009 в 14:03)   письмо автору
 
   для: cheops   (20.02.2009 в 02:00)
 

"стандартная настройка: если куки включены - храним в куках, если нет - в url. "

Да вот что-то не получается эта стандатная настройка!

Установил в php.ini session.name = SID - толку никакого.
Создал .htaccess файл в корневом каталоге и поместил в нем строку php_value session.name SID - тоже без толку.

Как еще можно достигнуть того, чтобы при отключенных куках сессия передавалась через УРЛ?

  Ответить  
 
 автор: Loki   (20.02.2009 в 15:54)   письмо автору
 
   для: Владимир55   (20.02.2009 в 14:03)
 

а эта настройка к делу отношения не имеет

  Ответить  
 
 автор: Владимир55   (20.02.2009 в 16:00)   письмо автору
 
   для: Loki   (20.02.2009 в 15:54)
 

А как настроить то, Loki ?

Как выяснилось, при компилляции --enable-trans-id указано не было. И что теперь делать?

  Ответить  
 
 автор: Loki   (20.02.2009 в 16:09)   письмо автору
 
   для: Владимир55   (20.02.2009 в 16:00)
 

тады - ой.
а так значений

session.use_cookies=1; 
session.use_only_cookies=0; //значение по умолчанию

по идее должно быть достаточно...

  Ответить  
 
 автор: Владимир55   (20.02.2009 в 16:39)   письмо автору
 
   для: Loki   (20.02.2009 в 16:09)
 

Внутренний голос так мне и подсказывал, что придется пересобирать рнр...
Это всё штучки пятой версии - в рнр4 сей параметр был задан по умолчанию.

  Ответить  
 
 автор: Trianon   (20.02.2009 в 16:51)   письмо автору
 
   для: Владимир55   (20.02.2009 в 16:39)
 

что мешает написать
session.use_trans_sid = 1 в php.ini или
php_flag session.use_trans_sid on в .htaccess ?

  Ответить  
 
 автор: Loki   (20.02.2009 в 17:33)   письмо автору
 
   для: Trianon   (20.02.2009 в 16:51)
 

чтобы поставить session.use_trans_sid = 1 в php.ini надо чтобы php был собран с ключем --enable-trans-sid

  Ответить  
 
 автор: а-я   (20.02.2009 в 17:37)   письмо автору
 
   для: Loki   (20.02.2009 в 17:33)
 

ну если совсем так тяжко
наверно, можно использовать output_add_rewrite_var()

  Ответить  
 
 автор: Владимир55   (20.02.2009 в 21:28)   письмо автору
 
   для: а-я   (20.02.2009 в 17:37)
 

А тчо это?
И как использовать?

  Ответить  
 
 автор: Trianon   (20.02.2009 в 21:59)   письмо автору
 
   для: Loki   (20.02.2009 в 17:33)
 

Саш, ты ничего не путаешь?
  session.use_trans_sid  boolean
    session.use_trans_sid whether transparent sid support is enabled or not. Defaults to 0 (disabled).

        Note: For PHP 4.1.2 or less, it is enabled by compiling with --enable-trans-sid. 
        From PHP 4.2.0, trans-sid feature is always compiled.

  Ответить  
 
 автор: Владимир55   (20.02.2009 в 22:08)   письмо автору
 
   для: Trianon   (20.02.2009 в 21:59)
 

Можно мне вмешаться в диалог?

Вот ответ от техподдержки, устанавливавшей рнр:
"--enable-trans-sid не было, да и не могло быть указано при компиляции рнр5"

  Ответить  
 
 автор: Trianon   (20.02.2009 в 23:21)   письмо автору
 
   для: Владимир55   (20.02.2009 в 22:08)
 

> Можно мне вмешаться в диалог?

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

> "--enable-trans-sid не было, да и не могло быть указано при компиляции рнр5"

что полностью объясняется процитированным мной фрагментом мануала.

  Ответить  
 
 автор: Trianon   (21.02.2009 в 11:16)   письмо автору
 
   для: Владимир55   (20.02.2009 в 22:08)
 

таки попробуйте (20.02.2009 в 16:51) чтоли...

  Ответить  
 
 автор: Владимир55   (21.02.2009 в 11:51)   письмо автору
 
   для: Trianon   (21.02.2009 в 11:16)
 

Да я сразу пробую всё, что здесь рекомендуется.

Вот это session.use_trans_sid = 1 в php.ini не вызымело никакого результата.

А это php_flag session.use_trans_sid on в .htaccess сработало, но:
- сессии вылезли во все урлы, даже и при включенных куки;
- сессии не передаются через формы ввода.

Кроме того, хочется всё же настроить рнр для канонической работы, описываемой в мануалах. Потому и родилась тема http://softtime.ru/forum/read.php?id_forum=1&id_theme=62767&page=1

  Ответить  
 
 автор: Loki   (21.02.2009 в 01:45)   письмо автору
 
   для: Trianon   (20.02.2009 в 21:59)
 

Наверное так и есть. Я поленился пойти в мануал и посмотрел только комментарии к php.ini, а там было сказано только про ; trans sid support is disabled by default.
и далее по тексту. В общем, информация там несколько устарела.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования