Другое

Как работает CSRF Token защита: что делать, если CSRF токен истек

Lorem ipsum dolor

CSRF Token — это уникальный способ защититься от CSRF-атак, которые достаточно распространены в веб-приложениях. Вообще, веб — это среда, где очень много различных видов атак, от которых нужно защищаться.

Любая атака злоумышленников нацелена на получение собственной выгоды для атакующего и на нанесение ущерба атакуемого объекта. В результате любой атаки злоумышленник незаконно овладевает какой-то информацией, которую может использовать в собственных целях. Это может быть личная конфиденциальная информация пользователей: 

  • платежные реквизиты;

  • личные  сообщения;

  • доступы к разным аккаунтам;

  • и др.

Чтобы завладеть такой информацией, злоумышленники могут использовать разные способы, одним из которых является CSRF. 

Что такое CSRF-атака?

CSRF — это «cross-site request forgery» и переводится как «межсайтовая подделка запросов». Этот вид атаки строится на «пробелах в безопасности» HTTP-запросов. Например, пользователь ничего не подозревает и заходит на какой-то сайт, который создал злоумышленник. Пока пользователь находится на зловредном сайте, злоумышленник отправляет от его лица запросы на сервера других веб-ресурсов. Например, хакер может от лица этого пользователя перевести деньги на собственный счет с пользовательского онлайн-банка. Самое главное, чтобы в этот момент пользователь был аутентифицирован на атакуемом ресурсе и там не требовалось подтверждение проводимых операций. К примеру, пользователь осуществлял оплату в интернет-банке, страница интернет-банка осталась открытой, а пользователь перешел на сайт злоумышленника. 

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

То есть  CSRF — это  способ провести операцию на уязвимом сайте от имени атакуемого пользователя. С помощью CSRF хакер может:

  • изменить пароль;

  • восстановить пароль;

  • поменять номер телефона на собственный;

  • поменять электронную почту на собственную;

  • добавить пользователя  в аккаунт;

  • что-либо оплатить;

  • и др.

CSRF-атаки доступны по простой причине. Браузер во время сессии не способен точно определить кто выполняет  некоторые действия: пользователь или программа. Например:

  • кто нажал на кнопку;

  • кто перешел по ссылке;

  • кто написал;

  •  и др.

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

CSRF-token — что это?

CSRF-token — это самый эффективный способ защититься от CSRF-атаки. Причем он не только эффективный, но и очень простой. Суть его в том, что сервер формирует случайный набор байт и отправляет их браузеру клиента. Набор байт — это и есть токен. Потом, когда браузер отправляет запрос серверу, происходит проверка, возвращает ли обратно браузер CSRF-token. Если токен, который генерировал сервер совпадает с тем, который вернул браузер, тогда все хорошо и сессия продолжается.

CSRF-token обычно защищает только небезопасные HTTP-запросы, например:

  • POST;

  • PUT;

  • DELETE;

  • PATCH.

Безопасные методы HTTP-запросов нет смысла дополнительно защищать токеном.

К CSRF-token применяются следующие требования:

  • должен быть уникальным для каждой отдельной операции;

  • должен действовать единоразово;

  • обладает  размером, который обеспечивает ему устойчивость к подбору;

  • генерируется специальным криптографическим генератором случайных чисел;

  • имеет ограничение по времени жизни.

Виды CSRF-токенов

CSRF-token может генерироваться и использоваться тремя способами:

  1. Synchronizer Tokens. Это самый простой и распространенный  способ использования CSRF-токена. В этом случае токен генерируется сервером и передается браузеру, при этом «копия» токена сохраняется на сервере. Потом происходит сверка токена браузера и токена, который сохранен на сервере. Когда сессия между браузером и сервером обновляется, тогда обновляется и CSRF-token.

  2. Double Submit Cookie. В таком методе токен не хранится на сервере, а передается браузеру в двух экземплярах: в куках и в каком-то параметре ответа. При первом запросе к серверу, сервер формирует токен. Потом сервер передает его обратно браузеру, но в двух местах:  в куках и еще в каком-то месте. При следующем обращении к серверу, у браузера проверяется наличие и идентичность токенов в обоих местах.

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

Заключение

CSRF-token — это рабочий способ защититься от CSRF-атак. Даже самый простой способ генерации CSRF-токена обеспечивает надежную защиту. А защитой, как известно, не нужно пренебрегать.

Схожие статьи

Словарь программиста или что такое батон: профессионализмы с примерами
Другое

Словарь программиста или что такое батон: профессионализмы с примерами

Перегрузка оператора вывода в C: что это и зачем она нужна
Другое

Перегрузка оператора вывода в C: что это и зачем она нужна

Что такое ошибка 0x80070091: почему возникает, и как исправить
Другое

Что такое ошибка 0x80070091: почему возникает, и как исправить

Другое

Как сделать, чтобы Макбук не засыпал: выключение спящего режима

×