Я создаю PHP API для веб-сайта, и я бы хотел ограничить доступ API к доменам, зарегистрированным на нашем сервере (во избежание злоупотребления использованием API). Итак, это мой подход прямо сейчас, и хорошо, он должен выглядеть довольно хорошо на бумаге.
- API настроен на
api.example.com
. - Пользователь, который хочет использовать регистры API у нас, добавляет свой домен и получает ключ API.
- Пользователь API будет использовать свой ключ API для шифрования своих данных запроса (через
mcrypt
) и отправит его черезcURL
вapi.example.com
. - Мой сервер проверяет, из какого домена этот запрос API приходит от, и сопоставляет этот домен с ключом API в базе данных. Если есть ключ API, API расшифровывает запрос через
mcrypt
с этим ключом, а затем используя тот же метод шифрует и отправляет результат.
Я застрял на шаге 4. Первоначально я планировал использовать HTTP_REFERER, чтобы проверить его, но поскольку cURL не отправляет его по умолчанию, и его можно легко подделать в пользовательском коде (CURLOPT_REFERER, насколько я помните), я застрял здесь.
Есть ли способ узнать, из какого домена поступает этот запрос API? Я вижу, что это можно сделать с помощью некоторых популярных API, таких как reCAPTCHA. Проверка _SERVER [ "REMOTE_HOST" ] на самом деле не является вариантом из-за общих хостов (они имеют одинаковые IP-адреса), поэтому это не сможет предотвратить злоупотребления (которые в большинстве случаев будут происходить с общих серверов).
Есть ли такой метод для проверки? Спасибо!