Как настроить ключ API с проверкой URL в JavaScript и PHP?

Использую PHP сервер и JavaScript. Требую проверки API-ключа с привязкой к допустимому домену для ограничения доступа. Например:

function initWidget(){
  fetch('http://example.net/api?token=abc123');
}

Проверку URL можно делать на сервере через проверку списка доменов из конфигурации, а не просто сравнивать строку. Как вы планируете обрабатывать несанкционированные запросы, и, может, стоит добавить логирование таких попыток?

Чтобы ограничить доступ API по домену, проверку можно делать на сервере: сравнивать домен из HTTP-заголовков с белым списком. Не забудьте, что relying solely on client-side проверки не безопасно, так как код легко подделать. Страница с конфигурацией и базовой логикой проверки позволит контролировать, какие домены могут обращаться к API и сразу реагировать на подозрительные запросы.

В своём опыте я столкнулся с похожей задачей. Обычно на серверной стороне делаю проверку HTTP_REFERER, сверяя его с предварительно заданным списком допустимых доменов. Это позволяет отсеять явные попытки обхода, хоть, конечно, HEADERS можно подделать. Дополнительно рекомендую логировать подозрительные запросы, чтобы потом легче найти возможные уязвимости. Пробовал разные комбинации и понял, что комплексный подход всегда надежней.

Согласен, что серверная проверка – самый надёжный вариант. Но вот интересно, пробовали ли вы комбинировать атрибуты заголовков с динамической выдачей ключей? Возможно, сопоставление токенов и логирование вместе даст дополнительную защиту. Что думаете по этому поводу?

Работаю уже не один год с API и могу сказать, что ключ проверять нужно всегда на сервере. Сравнивать заголовки с белым списком и логировать подозрительные запросы – хороший вариант. В моем опыте добавление проверки IP и других параметров помогает выявить подделку заголовков. Такой подход существенно повышает безопасность API, даже если клиентская проверка тоже реализована.