Нужны ли в регистрационных формах токены против атак CSRF?

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

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

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

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

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

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

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

Ответ 1

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

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

Уязвимость выглядит следующим образом:

  • Злоумышленник создает учетную запись хоста в доверенном домене
  • Злоумышленник подделывает запрос на вход в браузере-жертве с учетными данными учетной записи хоста
  • Злоумышленник обманывает жертву в использовании доверенного сайта, где они могут не заметить, что они вошли в систему через учетную запись хоста
  • Теперь злоумышленник имеет доступ к любым данным или метаданным, которые жертва "создала" (намеренно или непреднамеренно), в то время как их браузер был зарегистрирован с учетной записью хоста

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

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

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

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

Ответ 2

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

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

Ответ 3

Предварительная регистрация для проверки 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 users session,
preventing CSRF by forcing the attacker to guess the
sessions token.

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

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

Ответ 4

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

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

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