Нужны ли для входа формы токены против CSRF-атак? - PullRequest
138 голосов
/ 20 июня 2011

Из того, что я узнал до сих пор, цель токенов - не дать злоумышленнику подделать отправку формы.

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

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

Я понимаю, как работают токены, и в этом случае повышает безопасность, поскольку они гарантируют, что пользователь фактически заполнил и нажал кнопку «Отправить» формы для каждого добавленного в корзину элемента.

Однако добавляют ли токены какую-либо защиту в форму входа пользователя, для которой требуется имя пользователя и пароль?

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

Правильно ли мое понимание атак и токенов CSRF?И они, как я подозреваю, бесполезны для пользовательских форм входа в систему?

Ответы [ 4 ]

108 голосов
/ 12 марта 2013

Да. В общем, вам необходимо защитить свои формы входа от CSRF-атак, как и любые другие.

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

Уязвимость выглядит так:

  1. Злоумышленник создает учетную запись хоста в доверенном домене
  2. Злоумышленник подделывает запрос на вход в браузер жертвы с учетными данными этой учетной записи хоста
  3. Атакующий обманом заставляет жертву использовать доверенный сайт, где он может не заметить, что он вошел в систему через учетную запись хоста
  4. У злоумышленника теперь есть доступ к любым данным или метаданным, которые жертва «создала» (преднамеренно или непреднамеренно), когда их браузер вошел в систему с учетной записью хоста

В качестве подходящего примера рассмотрим YouTube . YouTube позволял пользователям просматривать записи «своей» истории просмотров, а их форма входа была уязвимой для CSRF! Таким образом, в результате злоумышленник может создать учетную запись с паролем , который они знали, зарегистрировать жертву на YouTube, используя эту учетную запись - отслеживая, какие видео смотрела жертва.

В этой ветке комментариев есть обсуждение , которое подразумевает, что его можно «использовать только» для подобных нарушений конфиденциальности. Возможно, но процитировать раздел в статье CSRF Википедии :

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

Акцент на "новые атаки". Представьте себе воздействие фишинг-атаки на ваших пользователей, а затем представьте, что фишинговая атака работает через собственную доверенную закладку пользователя на вашем сайте! В документе, указанном в вышеупомянутой ветке комментариев, приведено несколько примеров, выходящих за рамки простых атак на конфиденциальность.

12 голосов
/ 20 июня 2011

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

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

0 голосов
/ 24 января 2019

Да , поэтому другие веб-сайты не могут имитировать вашу форму входа!Так просто.

Чего они могут достичь, делая это?

  • Во-первых: вы не хотите этого допустить.
  • Второе: даже очень простые случаи сбоя, такие как:
    • блокировка пользователя из-за неверного пароля n нет.раз можно избежать.
    • Предупреждения о взломе могут быть предотвращены.и т. д.
0 голосов
/ 27 августа 2018

Предварительная регистрация для проверки CSRF не имеет особого смысла ИМХО.

Благодаря @squiddle за ссылку: seclab.stanford.edu / websec / csrf / csrf.pdf Мы можем прочитать на самой первой странице:

The most popular CSRF defense is to include a secret
token with each request and to validate that the received
token is correctly bound to the user’s session,
preventing CSRF by forcing the attacker to guess the
session’s token.

Если вы попытаетесь выполнить предварительный вход в систему для проверки CSRF, вы дадите потенциальному злоумышленнику возможность очистить действительный код вашего веб-сайта!Затем он / она сможет повторно опубликовать токен, уничтожив цель.

Возможно, злоумышленник может попытаться угадать имя пользователя вашего сайта.Что я сделал, если IP-адрес пытается угадать, скажем, 10 имен пользователей, но я просто попал в черный список.

...