Файлы cookie
Cтатья "Обеспечение безопасности веб-сайтов" предоставлена Sophos Plc и SophosLabs.
Декабрь 2007 г.
Одна из основных проблем при проектировании веб-приложения заключается в том, что запрос новой страницы всегда обрабатывается вне контекста предшествующих запросов. Попросить веб-приложение «запомнить пользователя» сложнее, чем обычно.
Большинство браузеров поддерживают два метода, которые веб-приложения могут использовать для «запоминания» посетителей: обычные файлы cookie и файлы cookie сеанса.
Файл cookie — это небольшой файл, создаваемый браузером и хранящийся на компьютере пользователя. Его содержимое не регламентируется, но обычно в таких файлах хранится название, дата окончания срока действия и некий объем данных, например:
«Count = 100»
или«Member = false»
.Файл cookie сеанса похож на обычный, но при этом он позволяет веб-приложениям хранить данные в памяти.
Различие заключается в том, что обычный файл cookie сохраняется на компьютере пользователя и остается на нем до момента удаления пользователем. Файл cookie сеанса, напротив, хранится только на протяжении времени работы компьютера и автоматически теряется при закрытии приложения-браузера. Тем не менее, у них есть общая черта: они подвержены манипуляциям извне.
Разработчики часто склонны считать данные из файлов cookie надежными, поскольку считают, что все должно быть в порядке, поскольку они сами разрабатывают соответствующий код. Они ошибаются. Хакер может с легкостью изменить файл cookie (а в некоторых случаях — и данные активного сеанса), чтобы обманом заставить веб-сайт предоставить доступ к закрытой странице.
При проектировании системы никогда нельзя полагаться на надежность пользовательских данных, вводимых посетителями напрямую или поступающих через файлы cookie. Стремитесь ограничить объем данных, сохраняемых в файлах cookie, в особенности тогда, когда эти данные не следует хранить в открытом доступе. Оптимальный подход — считать все данные, хранящиеся на компьютере пользователя, ненадежными.
В 2007 году сайт MySpace.com подвергся атаке с помощью трояна JS/SpaceStalk-A
, который крал информацию, хранящуюся в файлах cookie, и передавал ее на удаленный сервер. Такая информация может содержать конфиденциальные сведения — имена пользователей, адреса предпочитаемых сайтов и пароли.