Перевод статьи Лу Монтулли The reasoning behind Web Cookies.
Предпосылки создания кукисов
HTTP – это сетевой язык, на котором основан ваш браузер. HTTP, или Hyper Text Transport Protocol, был разработан и внедрен в рамках проекта WWW, начатого Тимом Бернерсом-Ли в CERN и расширенного несколькими университетами, корпорациями и частными лицами. WWW и HTTP являются открытыми стандартами, которые публикуются и передаются в общественное пользование с целью обеспечения совместимости и создания продуктов, которые могут стать повсеместными.
Одна из проблем, возникших в первые годы существования Интернета, заключалась в том, как создать сайты, которые запоминали бы отдельных пользователей. Вариантов использования “памяти” на сайте множество: корзины для покупок, персонализированный контент, вход в систему и многие другие интерактивные функции требуют памяти. Проблема 1994 года заключалась в отсутствии механизмов индивидуальной идентификации пользователя. Протокол HTTP был разработан для обеспечения быстродействия и эффективности, и частью его конструкции было подключение к веб-сайту, получение документа и последующее отключение.
Это позволило освободить сайт для обслуживания других клиентов, но также означало отсутствие понятия сессии. Без сеанса каждый раз, когда пользователь нажимал кнопку мыши, чтобы перейти на другую страницу, он становился просто еще одним случайным пользователем, не имея возможности связать его с действием, которое он совершил несколько минут назад. Это напоминает разговор с человеком, страдающим болезнью Альцгеймера. При каждом взаимодействии приходилось бы снова, и снова, и снова представлять себя.
История появления кукисов
К лету 1994 года идея добавления некоторой формы “памяти” в HTTP уже давно витала в воздухе в группах разработчиков WWW. Я не знаю точно, как долго, но думаю, что уже ,как один, два года. Было несколько интересных предложений, но одно из популярных, которое постоянно всплывало, заключалось в том, чтобы добавить уникальный идентификатор в каждый веб-браузер, чтобы веб-сайт мог индивидуально идентифицировать каждого пользователя, используя его для построения сессии. Я был категорически против этой концепции, поскольку уникальный идентификатор мог использоваться для отслеживания пользователя на каждом сайте. Так и не получив другого предложения, идея добавления сессий или памяти так и осталась нереализованной.
Где-то в июле 1994 года я пришел на встречу, чтобы рассказать о торговом сервере, над которым работала другая группа в Netscape. Им нужно было встроить в сервер функциональность корзины покупок, но у них не было хорошего способа сделать это с помощью существующей технологии. Они объяснили, что они хотят сделать, и мне пришлось покачать головой, согласиться с ними и сказать, что они не могут сделать это каким-либо разумным способом с помощью имеющихся технологий.
Я пообещал подумать над проблемой и вернуться к ним. В какой-то момент в течение следующей недели у меня сформировалась общая концепция Web Cookies. Идея позволить одному сайту посылать браузеру идентификатор сессии, который будет возвращаться только на сервер, мне понравилась и позволила избежать межсайтового отслеживания. Мне хотелось создать нечто более полезное, чтобы мы могли делать не только корзины для магазинов, поэтому я расширил концепцию идентификатора сессии до общей полезной нагрузки, которая отправлялась бы обратно на сервер.
Дизайн
Имея в голове примерный эскиз, я работал над общим дизайном cookies. Целью было создание идентификатора сеанса и общего механизма “памяти” для сайтов, который не позволял бы осуществлять межсайтовое слежение. Я обсудил проект с другими членами инженерной команды и получил полезные отзывы, особенно в отношении возможности отказа в обслуживании и других проблем безопасности. Особую помощь в разработке оказал Джон Джаннандреа. В итоге была разработана спецификация cookie, которая и сегодня определяет 95% того, что делают cookie. Web-сервер может возвращать браузеру информацию, которую браузер должен передавать серверу при каждом последующем обращении к нему. В Web Cookie сервер может встраивать случайный идентификатор сессии, имя пользователя, корзину или все, что угодно, если только он не пытается отправить что-то слишком большое или установить слишком много Cookie. Существуют также ограничения на способ передачи файлов cookie – по защищенным соединениям или без них, а также на то, должен ли файл cookie стираться, когда пользователь закрывает браузер или перезагружает компьютер.
Название
Термин “волшебный куки” я впервые услышал еще в колледже на курсе по операционным системам. Этот термин имеет несколько схожее значение с тем, как работают Web Cookies, и мне понравился термин “cookies” по эстетическим соображениям. Cookies – это первое, что я придумал, и название прижилось.
Востребованность кукисов
Осенью 1994 года мы выпустили браузер Netscape, и уже через год он стал самым популярным в мире. Мы также выпустили спецификацию Cookie, чтобы другие браузеры могли ее реализовать и чтобы веб-сайты знали, как ее использовать. Поскольку большая часть мира пользовалась браузером, поддерживающим Web Cookies, веб-сайты начали использовать Cookies для самых разных целей, причем так, как мы и предположить не могли. Большинство из этих применений были фантастическими, некоторые – вызывали опасения.
К 1996 и 1997 годам Интернет значительно вырос и превратился в большой бизнес. Большинство сайтов предоставляли свои материалы бесплатно и поддерживались рекламой. Рекламодатели искали способы повысить эффективность своей рекламы и обратились за помощью к Web Cookies.
Непредвиденная проблема
Проблема, которую я упустил из виду на этапе разработки Cookies, заключалась во взаимодействии между Cookies и встроенным содержимым веб-страницы. Веб-страницы начинаются как один HTML-документ на одном сервере. Этот HTML-документ содержит ссылки на другие ресурсы, которые загружаются для отображения сайта, который видит пользователь. Изображения, видео, текст и подключаемые модули – все это ссылки в HTML-документе, и любой из этих ресурсов может быть загружен из любой точки мира.
Техника ссылок – одна из тех, которые делают Web столь удивительно мощным. Когда Web Cookies сочетаются со встроенными ссылками, указывающими на другие сайты, они называются “Cookies третьей стороны” и представляют собой новый способ отслеживания пользователей на нескольких сайтах.
Использование в рекламе
Крупные рекламные компании, в частности DoubleClick, начали использовать сторонние файлы cookie для уникального отслеживания браузера на всех сайтах, использующих DoubleClick для размещения рекламы. Это было сделано не для того, чтобы определить имя пользователя, а для того, чтобы убедиться, что он не видит каждый раз одну и ту же рекламу, или для того, чтобы отследить количество уникальных пользователей, увидевших ту или иную рекламу. В конечном счете, объявления были настроены таким образом, чтобы отражать привычки просмотра уникальных идентификаторов. Если пользователь в прошлом просматривал байдарки и ракетки, то он получал рекламу спортивных товаров, байдарок и ракеток.
Примерно в 1996 году отслеживание рекламы с помощью Cookies стало горячей темой. Пользователи были недовольны такой практикой и требовали изменений. Конечно, отслеживание на разных сайтах – это не то, для чего предназначались cookies, они были разработаны с противоположной целью, но что можно было сделать в тот момент, чтобы решить проблему? Одним из решений, к которому мы пришли, было добавление элементов управления, позволяющих каждому пользователю контролировать, какие файлы cookie принимать и от кого.
В то время главный вопрос заключался в том, стоит ли полностью отключать сторонние cookies или нет. Решение имело широкий спектр последствий, поскольку реклама оплачивает большую часть веб-ресурсов, и отключение cookies сторонних разработчиков привело бы к тому, что многие законные способы использования cookies на встроенных ресурсах стали бы невозможными.
Неудобное решение
В конце концов, решение об отключении сторонних файлов cookie или их сохранении было оставлено за мной. Я мучился над этим решением несколько недель и в конце концов решил оставить их. Моя логика была двоякой:
Любая компания, имеющая возможность отслеживать пользователей на большом сегменте Интернета, должна быть крупной публичной компанией. Cookies могут видеть пользователи, поэтому компания, отслеживающая пользователей, не может скрыться от общественности. Таким образом, общественность имеет естественный механизм обратной связи, сдерживающий тех, кто пытается отслеживать их.
Если бы cookies сторонних производителей были запрещены, рекламные компании использовали бы другой механизм для достижения той же цели, и этот механизм не имел бы такого уровня видимости и контроля, как cookies. Мы бы поменяли одну проблему на другую.
Сегодня я по-прежнему считаю, что это было правильное решение. Правительства имеют возможность регулировать сбор данных крупными компаниями.
Общественность обязана оказывать давление как на компании, имеющие возможность отслеживать пользователей, так и на правительства с целью принятия разумных правил защиты конфиденциальности и мер обеспечения их соблюдения. Самое главное, что существуют другие механизмы, которые могут заменить веб-куки для отслеживания, если они будут повсеместно отключены, и эти механизмы будет гораздо сложнее заметить и отключить.
Долговечность
За последние 19 лет конструкция Cookies оставалась практически неизменной. Наибольшие изменения коснулись того, как пользователи могут просматривать и контролировать свои файлы cookie. Многие предлагали альтернативные варианты, но ни один из них не прижился. Cookies не идеальны, но они доказали, что достаточно хороши, и от них зависит большая часть функциональности Интернета.
Резюме
Веб-куки оказались в центре весьма противоречивых отношений и приобрели из-за этого определенную известность. Несмотря на то, что они были разработаны для защиты частной жизни, они используются таким образом, что иногда нарушают ее. Было предпринято много усилий для защиты конфиденциальности Web-пользователей, и контроль над Cookies был передан в руки каждого пользователя. Будущее Cookies и конфиденциальности пользователей, несомненно, еще долго будет оставаться интересной темой новостей, и это вполне оправданно. Природа рекламного бизнеса состоит в том, чтобы собирать как можно больше информации, поэтому общественность должна давать отпор, когда эти процессы заходят слишком далеко.