Xpoint
   [напомнить пароль]

Улучшает ли безопасность отключение cookie?

Зачем нужны cookie?

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

При доступе к страницам, требующим авторизации, сайт требует ввода и проверяет правильность имени и пароля только первый раз. После этого браузеру посетителя выдается уникальный идентификатор сессии, а сайт запоминает, что браузер с таким идентификатором в данным момент залогинен с таким-то входным именем. Идентификатор, как правило, выбирается из достаточно большого диапазона, чтобы не беспокоиться о подборе.

Как работают cookie?

Cookie представляют собой механизм для запоминания браузером текстовых данных. Сайт просит браузер запомнить некоторое (небольшое) количество информации. Браузер, если он настроен соответствующим образом, запоминает эту информацию и передает ее сайту с каждым последующим запросом. Сайт может получить только собственные cookie, информация с чужих сайтов ему не доступна.

Cookie бывают двух видов: хранимые и сеансовые (сессионные). В первом случае они хранятся указанное при их установке время, во втором — до закрытия браузера. Для идентификатора сессии обычно используются сеансовые cookie — нет причин хранить этот идентификатор после закрытия браузера. Хранимые cookie, в отличие от сеансовых, сохраняются на диск. Они часто используются для реализации сервиса "запомнить меня", то есть позволяют не вводить пароль на сайтах при каждом посещении. Пароль (или заменяющий его шифр) хранится в cookie и автоматически отсылается на сайт при заходе на него.

Почему у cookie плохая репутация?

У cookie сложилась репутация "дыры" безопасности, некоторые слишком усердные приложения для уничтожения вредоносных программ даже предупреждают об этом пользователя. Дело в том, что, запоминая посетителя, в принципе можно отслеживать все его действия — на какие страницы он ходит, какими товарами и услугами интересуется. Правда, это возможно только в пределах одного сайта, что сильно ограничивает возможности. "Следить" за пользователем в пределах одного сайта можно и более надежными способами, как правило используется комбинация из IP-адреса и идентификатора браузера.

Тут есть одно "но". До недавнего времени в Microsoft Internet Explorer (до выхода Windows XP Service Pack 2) картинки-счетчики могли устанавливать cookie, а поскольку один и тот же счетчик стоит на множестве сайтов, была возможность отслеживать посетителей и между разными сайтами.

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

Эти опасности приводят к тому, что многие пользователи и администраторы просто отключают у себя поддержку cookie. Сравним, как дело обстоит с безопасностью у альтернативных подходов.

Какие есть альтернативы cookie?

Все еще встречаются системы, которые идентифицируют пользователя по IP-адресу. В этом случае IP-адрес выступает в качестве идентификатора сессии, браузеру ничего запоминать не нужно. Это очень ненадежно. К примеру, 2 пользователя, пользующихся одним proxy-сервером, будут иметь один и тот же IP-адрес.

Хранить и передавать идентификатор браузера можно не только в cookie, для этого может использоваться и адресная строка. Это и есть основная альтернатива. В этом случае адреса выглядят примерно так:
httр://example.com/?SID=0cc8e376cbaf46f65394f9277172703c. Сайт дописывает ко всем внутренним ссылкам на своих страницах этот идентификатор, так что на какую бы из ссылок ни кликнул пользователь, идентификатор будет передаваться на сервер с каждым запросом.

Что мы получаем в этом случае? Сервер по прежнему отслеживает посетителей. Мы "побороли" cookie, но не сессии. Правда, посетитель может стереть из адресной строки идентификатор сессии, после чего станет для сервера словно бы новым посетителем, то есть человеку легче заставить сервер "забыть" о нем.

С другой стороны, если человек, находящийся на сайте, использующем идентификатор сессии в URL, кликнул на ссылку, ведущую на другой сайт, то браузер в поле referer передаст на тот сайт адрес исходной страницы вместе с пресловутым идентификатором. И любой, кто имеет доступ к логам того другого сайта, может узнать идентификатор и выдать себя за пользователя.

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

Идентификаторы засоряют адреса, затрудняя их запоминание. Поисковые роботы могут проиндексировать сайт с дописанным к его адресам идентификатором, замусоривая результаты поиска и понижая вес ключевых слов в адресах, поэтому создатели сайтов вообще не очень любят клиентов без cookie. Бывает, что они предлагают пользователю включить cookie, не давая до этого пользоваться сайтом.

При передаче идентификатора сессии в URL его можно потерять, перейдя по ссылке, не снабженной идентификатором (если таковая окажется на сайте), или попав на страницу, где идентификатор еще не был выдан, к примеру, нажав кнопку браузера "Назад".

Вывод

Основные проблемы с безопасностью вызывают именно хранимые cookie, как раз с их помощью можно отслеживать вкусы пользователя в течение периодов, достаточных для анализа (а это гораздо больше обычного времени жизни сеансовых cookie). И именно в них хранятся пароли при реализации механизма "запомнить пароль". То есть следует различать сеансовые и хранимые cookie и, если уж отключать, то только последние.

Отключение же и сеансовых cookie никаких видимых преимуществ в безопасности не дает, даже порождает дополнительные проблемы, в частности заставляя отключать вкупе с ними и передачу referer'а.

p.s. Личное мнение автора этого текста в том, что и хранимые cookie имеют право на жизнь и нет смысла их отключать, но тут уже у него нет железных аргументов.

Powered by POEM™ Engine Copyright © 2002-2005