Интервью: глубокое понимание файлов cookie и безопасности файлов cookie

опрос

Что такое файлы cookie

Файл cookie — это небольшой фрагмент данных, отправляемый сервером в браузер пользователя и сохраняемый локально, который будет передан на сервер в следующий раз, когда браузер инициирует запрос к тому же серверу.

Что оно делает:

  • Часто используется для управления состоянием сеанса пользователя, персонализированных настроек и т. д.

  • Внешний интерфейс может получить доступ к файлам cookie через document.cookie.

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

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

Какая связь между файлами cookie и CSRF

Чтобы понять эту проблему, мы должны сначала понять, что такое CSRF? Какие функции файлов cookie связаны с ним?

1. Что такое CSRF?

CSRF, китайское название — межсайтовая подделка запросов, Сценарий, который происходит, заключается в том, что пользователь входит в систему на веб-сайте a, затем переходит на веб-сайт b, а веб-сайт b напрямую отправляет запрос на веб-сайт a для выполнения некоторых опасных операций, и Атака CSRF происходит!

В настоящее время вы понимаете этот CSRF? Я думаю, что некоторые студенты до сих пор не понимают, потому что я видел слишком много таких описаний!

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

В настоящее время мы должны обратить внимание на мое определение файла cookie выше.При отправке HTTP-запроса переносимым файлом cookie является файл cookie адреса домена http-запроса. То есть я отправляю запрос с сайта а на сайт б, который несет куки под доменным именем сайта а! Неправильное понимание многих студентов заключается в том, что файлы cookie являются междоменными. Для любого запроса, отправленного веб-сайтом b, я могу хранить файлы cookie только под доменным именем веб-сайта b.

Конечно, мы можем прочитать файл cookie под названием B сайта B под веб-сайтом B, который является ограничением перекрестного домена файла cookie. Поэтому я должен помнить, не держите файл cookie http-запроса, смущать cookie текущего права доступа доступа.

Еще один момент, который следует понимать: CSRF-атаки — это только атаки, которые используют функцию переноса файлов cookie в http, но атакующий сайт по-прежнему не может получить файл cookie атакованного сайта. Это отличается от XSS, который подвергается прямой атаке путем получения такой информации, как файлы cookie.

2. Функции, связанные с файлами cookie?

В атаках CSRF функции, связанные с файлами cookie:

1. HTTP-запросы автоматически содержат файлы cookie.

2. Перенесенный файл cookie по-прежнему является файлом cookie доменного имени, на котором находится http-запрос.

3. Как Cookie реагирует на CSRF-атаки?

Как только вы поймете природу CSRF, вы сможете понять, как защищаться от CSRF-атак.

Вариант 1: отказаться от файлов cookie и использовать токен!

Потому что CSRF использует файлы cookie для подделки запросов, чтобы обмануть сервер для достижения своей цели. Тогда наша стратегия заключается в том, чтобы не использовать файлы cookie для проверки личности пользователя, мы используем Token!

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

В настоящее время это наиболее часто используемая стратегия защиты от CSRF-атак.

Вариант 2: файлы cookie SameSite

Фронтенд развивается, куки тоже развиваются, у куки появился новый атрибут — SateSite. Может решить проблему атаки CSRF.

Это указывает на то, что только HTTP-запрос, отправленный веб-сайтом с текущим доменным именем, может содержать этот файл cookie.

Конечно, поскольку это новый атрибут cookie, неизбежно возникнут проблемы с совместимостью.

Вариант 3. Проверка реферера на стороне сервера

В HTTP-запросе, который мы отправляем, в заголовке будет поле Referer. Это поле представляет доменное имя текущего домена. Сервер может использовать это поле, чтобы определить, является ли это «настоящим» запросом пользователя.

То есть, если веб-сайт b подделывает запрос с веб-сайта a, поле Referer по-прежнему указывает, что запрос исходит от веб-сайта b. Также возможно определить подлинность запроса.

Однако в настоящее время эта схема используется относительно немногими. Возможная проблема заключается в том, что если даже поле Referer можно подделать?

Какая связь между файлами cookie и XSS

Точно так же, чтобы понять взаимосвязь между ними, мы должны сначала понять, что такое XSS-атака.

1. Что такое XSS?

XSS вызван небезопасными данными, это могут быть данные, отправленные формой, или проблема с параметром пути к странице.

CSRF достигает своей собственной цели атаки, подделывая http-запросы. Но XSS достигает цели атаки путем кражи конфиденциальной информации пользователя. Например, локальное хранилище, пароли пользователей, файлы cookie и т. д.

Например, эти небезопасные данные являются тегом скрипта, тогда этот скрипт может ссылаться на любой файл js, и браузер будет выполнять js локально, так что через js мы можем сделать слишком много вещей:

Например, document.cookie для получения информации о пользователе.

Например, через localStorage можно получить конфиденциальную информацию (токен), хранящуюся локально.

Тогда, пока на этой странице отображается любая информация, я могу ее получить.

2. Как файлы cookie могут бороться с XSS-атаками

Вариант 1: только http

Cookie имеет атрибут http-only, что означает, что он может передаваться только HTTP-запросами.

Если ваш веб-сайт подвергается XSS-атаке, злоумышленник не сможет получить информацию о ваших файлах cookie через document.cookie.

Вариант 2: регулярная проверка

Мы узнали, что причиной XSS являются небезопасные данные.Важным каналом для источника этих данных является отправка формы и внедрение ее в базу данных. Поэтому для фронтенда нам нужно выполнять регулярную верификацию данных формы, и только после прохождения верификации данные можно отправлять.

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

Вариант 3: побег данных

Если безопасность данных в базе данных не может быть гарантирована, внешний интерфейс может скрыть все данные, которые необходимо отобразить на странице.Например, если встречается тег скрипта, замените его напрямую. Или встретите специальные символы, такие как идентификаторы тегов '', добавьте '\' для обработки.

Сравнение файлов cookie и токенов

1. Файлы cookie могут вызывать csrf-атаки, а токены лучше подходят для поддержания пользовательских сессий.

2. Поскольку HTTP-запрос содержит файлы cookie, при слишком большом размере файла cookie пропускная способность HTTP-запроса будет увеличена.

3. Характеристики файлов cookie делают файлы cookie очень небезопасными при атаках CSRF.

Как оптимизируются файлы cookie

С точки зрения безопасности попробуйте использовать токены для удержания сеанса.

С точки зрения HTTP-запросов старайтесь, чтобы информация о файлах cookie была как можно меньше, чтобы размер HTTP-запроса был меньше.

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

Загрузка других ресурсов, таких как изображения, файлы js, css и т. д., может размещаться в CDN, чтобы файлы cookie не переносились, а стратегия CDN также ускоряет загрузку ресурсов.