Что такое прекращение атак на ссылку в атрибуте action в формах HTML? - PullRequest
0 голосов
/ 08 мая 2018

Я знаю, что название звучит странно, поэтому вот что мне интересно:

Допустим, у меня есть страница, на которой пользователи могут войти, на https://example.com/login.Форма на странице выглядит следующим образом:

<form method="post" action="https://example.com/api/auth/login">
    <!-- input fields here -->
    <button type="submit" value="Sign in">
</form>

Сценарий на https://example.com/api/auth/login проверяет правильность введенных пользователем имени пользователя и пароля.Затем он отвечает JSON соответствующим образом.

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

1 Ответ

0 голосов
/ 08 мая 2018

Название атаки, которую вы описали, - подделка межсайтовых запросов, CSRF.

Вы действительно должны реализовать защиту csrf, вы можете выбрать один из нескольких вариантов. Токены синхронизатора можно использовать, если ваше приложение имеет статус (произвольный токен, сохраненный в сеансе и сгенерированный на странице html, затем отправленный и сравненный на сервере при каждом запросе на публикацию), или что-то вроде двойной публикации (установка одного и того же токена в cookie и как заголовок запроса и сравнивая их на сервере), если ваше приложение не имеет состояния.

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

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

...