Нужна ли защита CSRF для конечной точки / login? - PullRequest
0 голосов
/ 29 сентября 2019

Я знаю

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

Даже такие проекты, как https://github.com/pillarjs/understanding-csrf были заброшены и не отвечали на новые вопросы и сомнения на протяжении многих лет, такие как this .

ПРОБЛЕМА

Допустим, у меня есть:

  • серверная часть на back.domain.com и
  • входная на front.domain.com.

Мой бэкэнд представляет собой просто приложение nodejs со следующими конечными точками отдыха:

  1. POST /login:

    1. принимает тело JSON, например: {"username": "myname", "password": "mypass"}
    2. проверить учетные данные
    3. , если OK дает 200 и создать cookie с сеансом
    4. , если NOT дает 401
  2. GET /players:

    1. проверка сеанса в cookie
    2. , если OK дает 200 с {"Players": "[. ..] "}
    3. если НЕ дает 401
  3. POST /player/1:

    1. проверка сеанса в cookie
    2. , если OK дает 200 и редактирование игрока
    3. , если NOT дает 401

Мое интерфейсное приложение имеет:

  1. /login страницу с формой (с полями username и password) дляотправить POST запрос на back.domain.com/login

  2. /players, который запрашивает GET запрос на back.domain.com/players

  3. кнопкукоторый выдает POST запрос к back.domain.com/player/1

ВОПРОСОВ

  1. Нужна ли защита CSRF в этом сценарии?

    Я думаю ДА, мне нужно , потому что злоумышленник может отправить запрос на back.domain.com/player/1 с malicious.site.com и использовать мой файл cookie сеанса для редактирования игрока, потому что я вошел в систему (иУ меня все еще есть файл cookie сеанса) на моем domain.com.

  2. Нужна ли мне защита CSRF (например, заголовок X-CSRF-Token) при первом входе в систему на back.domain.com/login?

    1. В этом сценарии в моем браузере по-прежнему нет файлов cookie сеанса.
    2. А также я не знаю, где взять мой токен CSRF для X-CSRF-Token заголовка авторизации.

    Я читал https://fractalideas.com/blog/making-react-and-django-play-well-together-single-page-app-model, они создают выделенную конечную точку на бэкэндедля этого и они объясняют это не уязвимость безопасности.

О чем вы думаете?

...