Почему сеансы не подходят для CORS? - PullRequest
0 голосов
/ 01 января 2019

Вопрос такой же, как и в названии.

Я следовал учебному пособию (от Thinkster) о Django Rest Framework, одно содержание о проверке подлинности которого, как показано ниже.

"В нашем случае клиент и сервер будут работать в разных местах. Сервер будет работать на http://localhost:3000/, а клиент будет на http://localhost:5000/. Браузер считает, что эти два местоположения находятся в разных местах.домены, аналогичные работе сервера на http://www.server.com и работе клиента на http://www.client.com. Мы не будем разрешать внешним доменам доступ к нашим файлам cookie, поэтому нам нужно найти другое альтернативное решение для использования сеансов.

Если вам интересно, почему мы не разрешим доступ к нашим cookie-файлам, ознакомьтесь со статьями о перекрестном распределении ресурсов (CORS) и подделке межсайтовых запросов (CSRF), ссылки на которые приведены ниже.Если вы просто хотите начать кодирование, установите флажки и продолжайте.

"

Здесь я читаю все материалы, рекомендуемые здесь,MDN документирует CORS и CSRF, но по-прежнему не может понять причину, по которой мне не следует использовать сеансы, если я использую здесь CORS и CSRF.

Я даже обнаружил, что некоторые страницы говорят, что если я изменю поле 'withCredentials' на«истинно», тогда я могу придерживаться сеансов. ( CORS-запросы с сеансом / cookie )

1 Ответ

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

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

Предполагается, что злоумышленник Eve (популярно используемый в кибербезопасности по некоторым причинам), имеющий сайт B хочет получить доступ к сайту A, все, что ему нужно сделать, это просто отправить запрос, пока браузер добавляет файлы cookie A, так как запроссобираюсь в А. Вуаля!Ваш сервер аутентифицирует запрос и у него есть доступ.Этот тип атаки называется Подделка межсайтовых запросов (CSRF)

Теперь вот идет совместное использование межсайтовых запросов (CORS).Это механизм, используемый браузерами для предотвращения CSRF-атак.Прежде чем сделать такой запрос по доменам, они сначала выполняют запрос preflight , который в основном запрашивает у сервера, принимают ли они запросы из данного домена, и какие методы и заголовки HTTP они принимают из такого домена.Если на вашем сервере не настроена CORS (обычно с использованием django-cors ), браузер не будет разрешать междоменные запросы по умолчанию.

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

Конечно,умнее и злее Ева все-таки может как-то обойти этот механизм, но он по крайней мере обеспечивает базовую и минимальную безопасность вашего сайта

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