Запросы, отправляемые клиентами (например, браузерами), не поступают из определенного домена.Они приходят с IP-адреса клиента.Этот клиент может запускать веб-страницу с определенного сайта, но любая информация, включенная в запрос на этот счет, не может быть доверенной и может быть подделана так, как хочет клиент.Подумай об этом еще раз.Клиентские запросы не приходят с домена.Они исходят от клиента, который мог или не мог получить веб-страницу от определенного домена до отправки запроса API.
Таким образом, НЕТ, вы не можете использовать предоставленную клиентом информацию о доменном адресе страницы для реализации какого-либо разумного уровня безопасности.,Если запрос содержит информацию о том, с какой веб-страницы поступил код запроса, то эта информация может быть легко подделана мошенническим клиентом.
API, которые используются из браузера, могут потребоваться для использования в сочетании с вошедшим в систему пользователем (с помощью файла cookie для входа в систему или какого-либо токена безопасности, полученного после входа в систему), но не могут быть «защищены» после этого.Чтобы браузер мог получить доступ к вашему API, любой другой клиент, в том числе мошеннические клиенты, также может получить доступ к API.
Типы защиты, которые такие люди, как Google, применяют к своим API, которые используются в браузерах:
- токены API, которые позволяют им отслеживать использование по определенному токену и / или отзывать токены, которые используют службу не по назначению
- Ограничение рейтинга, предотвращающее злоупотребление API конкретным пользователем API или IP-адресомservice
- Лицензирование разрешенного использования, а затем отслеживание на стороне сервера того, что является допустимым или недопустимым использованием
- Мониторинг использования вошедшего в систему пользователя для отзыва имен входа, которые неправильно используют API службы
- Краткосрочные токены API, которые динамически генерируются на веб-страницах и регулярно меняются.
Таким образом, вы можете запросить учетную запись API или логин пользователя, прежде чем разрешить доступ к вашей службе.Кроме того, можно было бы просто защитить API от неправильного использования, а также понять, что определенный пользовательский клиент все еще может получить доступ к API.
Я решил, что мне следует разрешать запросы POST только из моего собственного домена.
Вы должны разрешать запросы POST только от действительного, вошедшего в систему пользователя (требовать учетные данные для входа в систему при каждом запросе API), и вы должны разрешать им влиять только на данные, которые этот конкретный пользователь имеет права изменять.Вы не можете контролировать, откуда поступают запросы или какой тип клиента их выполняет.