Что такое КОРС? Как это помогает с безопасностью API?

Если я скажу вам, что CORS означает совместное использование ресурсов между источниками, это может показаться слишком техническим.

Итак, позвольте мне разбить это на простом примере.

Представьте, что вы в ресторане, хотите что-то заказать для вас. Вы разместите свой заказ у официанта, который что-то сделает и сделает для вас. Верно? Вы не идете прямо на кухню и не зачитываете там свой заказ шеф-повару!

Но представьте, если люди идут прямо на заднюю кухню и читают свои заказы шеф-повару. Могут случиться две вещи -

1. Шеф-повар может быть завален всем списком заказов, что может рухнуть, не приготовив.

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

В обоих случаях кухня открыта для любого нежелательного/неожиданного события.

Итак, какое решение здесь? Официант.

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

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

Внешний интерфейс работает в своем собственном домене (скажем, www(dot)mycook(dot)com) и запрашивает API для размещения заказов (www(dot)api(dot)mycook(dot)com).

Серверная часть устроена таким образом, что никакой другой запрос, кроме (www(dot)mycook(dot)com), не может получить к нему доступ, и любые подобные попытки запрещены.

Такой доступ через разные домены (www(dot)mycook(dot)com ➡️ www(dot)api(dot)mycook(dot)com) называется Cross-Origin-Resource-Sharing или КОРС.

Если запрос завершается неудачно из-за того, что ему не разрешен доступ, он выдает ошибку Preflight Request Failed и не позволяет запросу двигаться вперед.

Что такое предварительный запрос?

При взаимодействии с API клиентский браузер Cross-Origin сначала выполняет вызов ресурса API, который он хочет использовать. Это автоматический вызов и глагол OPTIONS.

Мы называем это предварительным запросом.

Затем API возвращает все разрешенные вызовы для клиента, а также сообщает ему, будет ли принят запрос, о котором идет речь, или нет.

Если запрос не будет работать, этот запрос OPTIONS завершается ошибкой с исключением «ошибка запроса предварительной проверки».

Как помогает CORS?

1. CORS помогает нам блокировать нежелательный доступ к сетевым ресурсам (серверам, очередям, хранилищам и т. д.).

2. CORS помогает нам обеспечить детальный доступ к ресурсам (по домену, методу, заголовкам и т. д.)

3. Каждый фреймворк имеет собственную реализацию CORS, вам просто нужно использовать соответствующую библиотеку

Например, ASP.NET Core имеет ПО промежуточного слоя CORS, которое необходимо настроить, прежде чем разрешать доступ к ресурсу API.

Точно так же ExpressJS также имеет промежуточное программное обеспечение cors(), которое необходимо добавить до создания конечных точек.

Помните, что если CORS не настроен, то API по умолчанию будет отклонять запросы Cross-Origin.

Это все о CORS. Надеюсь, это поможет вам лучше понять эту концепцию. Пожалуйста, поделитесь им с друзьями.

Какие еще концепции вы хотите, чтобы я осветил? Пожалуйста, прокомментируйте.

#api #development #cors #security #design #share #данные