Что такое Cross-Site Request Forgery (CSRF) ?

Что такое Cross-Site Request Forgery (CSRF) ?

В последнее время задумывался над тем, что еще стоит подъучить, чтобы получить зарплатку по выше. И решил посмотреть в сторону безопастности приложений, а в частности веб-сайтов. Итак, сегодня начнем с Cross-Site Request Forgery (CSRF) .

Cross-Site Request Forgery (CSRF) представляет собой атаку, в ходе которой пользователь выполняет некоторое не желательное действие, пока он авторизирован в другом приложении.

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

Обычно, все запросы, которые происходят во время Cross-Site Request Forgery (CSRF) атак, ставят перед собой целью «изменить состояние», а не похитить данные, т.к. в данной ситуации проблематично их похитить.

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

Предотвращение Cross-Site Request Forgery (CSRF) атак

На самом деле, вариантов предотвращения SCRF атак достаточно много. Есть и более сложные, ест менее сложные, а так же есть и не рабочие варианты предотвращения. Я бы выделил пару методов предотвращения, которые являются наиболее популярными (если интересно больше информации, то вам сюда).

Использование токена

При каждом обращении к странице создается уникальный токен, который в последствии будет использоваться при каких-то «важных» запросах. Тут важно, чтобы токен было невозможно\крайне сложно подделать и чтобы токен имел ограниченное время жизни.

Подтверждение

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

Заключается этот метод в том, что перед разрешением выполнения какого-то действия вы просите пользователя подтвердить, что это он — например, можно просить его повторно ввести пароль.


Вот такой краткий экскурс в CSRF. Не забывайте просматривать и другие статьи на блоге. Например, ввод в React Native или добавление иконки к приложению React Native.

Так же, сам сайт изначально задумывался как блог про путешествия, так что не забывайте поглядывать и в эту сторону 😉 Например, обзор Копенгагена, обзор Унаватуны, слоновник в Пиннавеле, мыс Рока.

Ну и еще одна тема, которую я освещаю в блоге — это фотография. Например, я делился своим опытом по выбору фотоаппарата и чем я руководствовался при выборе объективов.