Создание PHP API: проверка того, с какого сервера поступает запрос API

Я создаю PHP API для веб-сайта, и я хочу ограничить доступ API к доменам, зарегистрированным на нашем сервере (чтобы предотвратить злоупотребление Использование API). Итак, это мой подход прямо сейчас, и он должен хорошо выглядеть на бумаге.

  1. API настроен на api.example.com .
  2. Пользователь, который хочет использовать API регистрируется у нас, добавляет свой домен и получает ключ API.
  3. Пользователь API будет использовать свой ключ API для шифрования данных своего запроса (через mcrypt ) и отправляет их через cURL на api.example.com .
  4. Мой сервер проверяет, из какого домена поступает этот запрос API , и сопоставляет этот домен с ключом API в базе данных. Если есть ключ API, API дешифрует запрос через mcrypt с этим ключом, а затем с помощью того же метода шифрует и отправляет результат.

Я застрял на шаге 4. Изначально я планировал использовать HTTP_REFERER для проверки, но поскольку cURL не отправляет его по умолчанию и его можно легко подделать в коде на стороне пользователя (CURLOPT_REFERER, насколько я помню), я застрял здесь.

Есть ли метод узнать, из какого домена поступает этот запрос API? Я вижу, что это можно сделать с помощью некоторых популярных API, таких как reCAPTCHA. Проверка _SERVER ["REMOTE_HOST"] на самом деле не вариант из-за общих хостов (у них одинаковые IP-адреса), поэтому это не сможет предотвратить злоупотребления (которые в любом случае исходят в основном с общих серверов).

такой способ проверить на это? Спасибо!

11
задан Jimmie Lin 10 August 2011 в 08:01
поделиться