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

Форум PHP

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

 

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

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

тема: Сеанс и роботы: не дыру ли я нашёл!
 
 автор: кен   (13.05.2005 в 19:38)   письмо автору
 
 

Просматривал я нынче свою базу статистики. Смотрю - зашёл вчера вечером на сайт Робот Яндекса, создал сеанс. В рамках сеанса обошёл три страницы. И тут вижу, что сегодня в 2 часа дня с Яндекса зашёл гость - и попал прямо в роботовский сеанс! (Мой счётчик ведёт учёт внутри сеансов). Робот сохранил ссылку вместо с get-идентификатором сеанса, а сеанс-то ещё жив!
А потом я с помощью оставшегося от гостя реферера нашёл на Яндексе эту ссылку и перешёл по ней. Угадайте, что произошло? Правильно - я попал В ТОТ ЖЕ САМЫЙ СЕАНС! Гость до меня ничено там не менял, вышел сразу (его другая тема интересовала). А вот я поместил в корзину пару стеночек. Потом закрыл свой IE. Потом снова открыл, зашёл на Яндекс и снова перешёл по той же ссылочке. И опять попал в тот же сеанс - корзиночка уже не пуста! А если кто ещё зайдёт? Уже двое будут делить одну корзину, одни личные настройки, одни личные данные (телефон, адрес итд). А если ещё парочка-тройка гостей зайдёт по той же ссылочке в примерно то же самое время?
К тому же вроде выходит, что пока сеанс на сервере жив, то при переходе по ссылке с прилепленным к ней SESSID гость попадёт в него. А если сеанс умер - БУДЕТ СОЗДАН НОВЫЙ ТАКОЙ ЖЕ, в который опять будут попадать все остальные!
Вот и скажите, кто-нибудь наблюдал уже подобные коллизии? И как с этим быть! А может я чего-то путаю, и всё совсем не так?

Прошу, кто-нибудь, помогите проверить догадку. Зайдите на Яндекс ([url]http://www.yandex.ru/yandsearch?text=поддержка iframe браузер&stype=www[/url]
), а оттуда - в корзину моего сайта (ссылка должна быть на 7 месте). Будет ли в корзине что-то? Если да, то можете перейти на страничку "оформить заказ" - я там в бланке приветственное сообщение оставил! Заказ и данные бланка хранятся в сеансе.

Побочный вопрос: почему Yandex/1.01.001 и msnbot/1.0 проиндексировали мою корзину, если в robots.txt прописано:

User-Agent: *
Disallow: /korz/

, а korz/ - это папка, в которой лежит файл корзины.

   
 
 автор: Ivan   (13.05.2005 в 20:34)   письмо автору
 
   для: кен   (13.05.2005 в 19:38)
 

Все точно, две стенки и привет от товарища Кена лежат, мог бы еще пивка бутылочку...

   
 
 автор: Flash5   (13.05.2005 в 20:37)   письмо автору
 
   для: кен   (13.05.2005 в 19:38)
 

Зашел я по ссылке
[url]http://www.yandex.ru/yandsearch?text=поддержка iframe браузер&stype=www[/url]
А дальше куда?

   
 
 автор: кен   (13.05.2005 в 20:53)   письмо автору
 
   для: Flash5   (13.05.2005 в 20:37)
 

Дальше 7 место: "КЕНМЕБЕЛЬ.РУ: корзина. | мебельный интернет - магазин "КЕНТАВРУС", мебель с ..."

Да и прямо отсюда должно сработать:
[url]www.kenmebel.ru/korz/korz.php?KNTVRSMBL=626cbb23d1228312c45b8dbb23829d9a[/url]

   
 
 автор: кен   (13.05.2005 в 20:58)   письмо автору
 
   для: кен   (13.05.2005 в 20:53)
 

Не отсюда ссылка кривая вышла, строки "http://softtime.ru/forum/" в адресе быть не должно - это вопрос к хозяевам форума, как так вышло. Нужна просто www.kenmebel.ru/korz/korz.php?KNTVRSMBL=626cbb23d1228312c45b8dbb23829d9a

   
 
 автор: $OMEGA   (13.05.2005 в 20:56)   письмо автору
 
   для: Flash5   (13.05.2005 в 20:37)
 

7й урл его.
Попробуй в хедере в метах прописать "noindex", но не обещаю, что поможет.

   
 
 автор: cheops   (13.05.2005 в 21:07)   письмо автору
 
   для: кен   (13.05.2005 в 19:38)
 

Тоже лицезрел две товарные позиции на 57 000 рублей. Так часто бывает, когда сессии именованные (KNTVRSMBL), передаются через URL и не уничтожаются, часто попадаешь на страницу ответа форума phpBB вместо страницы с постами. К сожалению, проблема воровства сессий стоит очень остро http://www.softtime.ru/info/articlephp.php?id_article=36

   
 
 автор: кен   (13.05.2005 в 23:25)   письмо автору
 
   для: cheops   (13.05.2005 в 21:07)
 

Статья хорошая. Но в моём случае роль "неосторожного владельца сеанса", предоставляющего всем ссылку с SID, выполняет робот поисковика, а роль "злоумышленника" - любой перешедший по этой ссылке.

- Как сделать, чтобы роботы сохраняли "чистые" ссылки, без строки параметров?

И про уничтожение я не совсем понял. Есть функции session_unset() и session_destroy(), но я не понимаю,

- в каком месте сценария их надо использовать, чтобы связь страниц через сеанс не разрушалась?

   
 
 автор: glsv (Дизайнер)   (14.05.2005 в 03:39)   письмо автору
 
   для: кен   (13.05.2005 в 23:25)
 

> - Как сделать, чтобы роботы сохраняли "чистые" ссылки, без строки параметров?
В общем случае, никак. Роботы практически никому не подвластны.
Вы можете только запретить им совсем читать данный раздел.

User-Agent: *
Disallow: /korz/

Странно, что эти строки не сработали.
robots.txt у вас в нижнем регистре записано?

   
 
 автор: кен   (14.05.2005 в 04:29)   письмо автору
 
   для: glsv (Дизайнер)   (14.05.2005 в 03:39)
 

Да, robot.txt в нижнем регистре. Почему не работает - не знаю. Но и запрет индексирования главной проблемы не решит: SID присоединён КО ВСЕМ ССЫЛКАМ НА ВСЕ СТРАНИЦЫ САЙТА от поисковиков Yandex, Yahoo!, MSN. Не запрещать же индексацию всего сайта! Раз роботам не укажешь, то остро встаёт задача: очередной человек заходит с поисковика в публично открытый сеанс, и мой скрипт должен обеспечить его новым собственным сеансом. Для определения нового гостя можно хранить в сеансе IP хозяина и сравнивать IP при каждом обращении к сеансу. А если IP не совпал, то вопрос:

- как, уже после регистрации сеанса (session_start() и session_register('IP')) и определения несовпадения IP, создать для гостя новый сеанс, никак не связанный с текущим?

Если ответа не найдётся, то вывод один: механизм сеансов (сессий) в PHP использовать НЕЛЬЗЯ! Ни в одном мало-мальски серьёзном проекте. И придётся что-то выдумывать с хранением сеансовых данных в файлах или в базе данных.

   
 
 автор: cheops   (14.05.2005 в 12:49)   письмо автору
 
   для: кен   (14.05.2005 в 04:29)
 

А нельзя использовать сессионные куки? Т.е. при заходе посетителя на сайт смотреть устанавливаются у него куки или нет, если устанавливаются, тогда не передавать SID через URL - он будет передаваться через сессионные куки автоматически. Если не устанавливаются тогда передавать его через SID? Пользователи браузеры которых не поддерживают cookie очень мало и для подавляющего большинства посетителей у вас будут чистые URL. Или вообще запретить передачу SID через URL, а на сайте поставить предупреждение, что для корректной работы необходимо включить поддержку cookie. Обычно так поступают.

Например при создании новой темы на этом форуме инициируется сессия, однако в SID она не помещается и роботы нормально индексируют страницы.

   
 
 автор: кен   (14.05.2005 в 16:33)   письмо автору
 
   для: cheops   (14.05.2005 в 12:49)
 

Не по душе мне куки. Есть одна идея. Для проверки нужно организовать редирект с передачей параметров. Подскажите, как такой делается? Желательно, с помощью header. Я что-то не припомню.

   
 
 автор: кен   (14.05.2005 в 16:37)   письмо автору
 
   для: cheops   (14.05.2005 в 12:49)
 

Да, забыл уточнить. Нужно сделать редирект на другую страницу в той же самой папке.

   
 
 автор: JIEXA   (14.05.2005 в 19:42)   письмо автору
 
   для: кен   (14.05.2005 в 16:37)
 

> Да, robot.txt в нижнем регистре.
файл должен называться robots.txt

   
 
 автор: кен   (15.05.2005 в 04:10)   письмо автору
 
   для: JIEXA   (14.05.2005 в 19:42)
 

Это я здесь опечатался. А файл правильно называется: robots.txt. И не работает.

   
 
 автор: кен   (15.05.2005 в 04:27)   письмо автору
 
   для: кен   (14.05.2005 в 04:29)
 

Вот такой совет нашёл на http://www.php.net/manual/en/ref.session.php:

wolfpack 03-Apr-2005 12:02
Search engines in general don't support cookies, and they don't do well with SIDs in the query string. If you use sessions, especially URL-based sessions, and want your site to be search engine friendly, the following works well:


<?php
   $br 
get_browser();
   if (!(
$br->crawler))
   {
       
// any session-related code goes here    
   
}
   else
   {
       
// whatever your page needs to work without sessions
   
}
?>

To use the function get_browser() you may need to install browscap.ini. See the documentation for get_browser() for more info.

Дельный ли совет? Если эта штука работает как надо, то ей ведь и в статистике роботов ловить можно. А главное, по теме, роботы будут делать "чистые" ссылки, и проблема решается очент элегантно! Но вот насколько этот get_browser() точен? Кто-нибудь такой штукой пользовался?

   
 
 автор: кен   (15.05.2005 в 16:15)   письмо автору
 
   для: кен   (15.05.2005 в 04:27)
 

Никто ничего не знает про get_browser()? Что-то я не пойму, как инсталлировать browscap.ini?

   
Rambler's Top100
вверх

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