Что такое CORS?
Это совместное использование ресурсов Cross Origin.
Как веб-разработчик, вы наверняка сталкивались с этим. Вы могли бы рассматривать это как дополнительную боль вместо того, чтобы понимать ее важность.
В результате, просто чтобы все заработало, вы бы включили CORS на своем сервере без каких-либо ограничений.
Для тех, кто еще новичок и понятия не имеет, что такое CORS,
Когда веб-страница обслуживается определенным хостом, он пытается вызвать ресурс на другом хосте; это называется запросом перекрестного происхождения. Теперь, если другой хост соглашается поделиться ресурсом, это называется CORS.
Браузеры предназначены для принятия дополнительных мер в таких случаях, делая предварительный запрос и ожидая дополнительной поддержки от Серверов.
Например:
У меня есть веб-страница с названием http://example1.com/index.html.
Я пытаюсь загрузить изображение с http://example2.com/img/cat. png, считается запросом Cross Origin.
Почему CORS по умолчанию отключен на серверах?
Существует угроза безопасности под названием CSRF, т. е. межсайтовая подделка ресурсов.
Допустим, вы веб-разработчик и разработали веб-приложение для банка.
Ваше веб-приложение вызывает ресурс API для перевода денег с банковского счета вошедшего в систему пользователя на другой банковский счет.
Например:
POST http://examplebank.com/transfer
{
destBankAccount : 456,
сумма: 100,
валюта: GBP
}
Кроме того, вы включили CORS на своем сервере без каких-либо ограничений.
Клиент вашего банка войдет на веб-сайт Банка (скорее всего, это создаст cookie в браузере), и в то же время клиент также откроет другой веб-сайт в том же браузере. Давайте назовем этот другой веб-сайт вредоносным веб-сайтом.
Вредоносный веб-сайт теперь вызывает тот же ресурс API http://examplebank.com/transfer, используя Javascript, который веб-сайт вашего банка использует для перевода денег в фоновом режиме. Разница в том, что вредоносный веб-сайт вызывает API с destBankAccount в качестве банковского счета хакера.
Поскольку действительный файл cookie сеанса веб-сайта вашего банка все еще существует в браузере, браузер отправит его, пока ресурс API http://examplebank.com/transfer вызывается вредоносным веб-сайтом, и сервер успешно аутентифицирует запрос.
Результат
Деньги были переведены на счет хакера вами и с помощью вашего браузера.
Обучение
- для веб-разработчиков не включайте CORS глобально, не полностью понимая его последствия; особенно для ресурсов PUT, POST и DELETE API. Примите дополнительные меры для защиты ваших ресурсов от CSRF.
- для конечных пользователей не открывайте никакие другие веб-сайты, пока вы вошли в систему на конфиденциальных веб-сайтах, например. Банковское дело и т. д. Вы не хотите стать жертвой простой ошибки разработчика вашего конфиденциального веб-сайта.