Как реализовать межсерверные данные с помощью этой иллюстрации - PullRequest
0 голосов
/ 19 апреля 2019

Я устанавливаю два виртуальных хоста на моем локальном компьютере, первый домен - http://dev.local, а другой обрабатывает запрос API http://api.server.local/. Идея проста, но не уверен, как реализовать этот вид установки. Итак, вот собственно процесс. Dev.local отправит некоторые важные параметры и значения, которые сервер API сначала прочитает, и проверит данные, отправленные с dev.local.

Например, у меня есть ключ API, предоставленный сервером API и хранящийся в базе данных вместе с доменом, который может использовать только этот API. Поэтому самое важное, что я хочу убедиться, что только dev.local может выполнить запрос. Вот несколько иллюстраций.

[иллюстрация] https://i.imgur.com/OKu34TM.png

Я уже пробовал функции cURL, но по некоторым причинам доступ к данным может получить любой, у кого есть копия ключа API. Поэтому я хочу убедиться в том, откуда поступил запрос или в каком источнике.

Это скрипт, который у меня есть для моего dev.local, чтобы получить доступ к моему api.server.local

 <?php

 $__apiServer    = 'http://api.server.local';
 $__apiVersion   = '1.0';
 $__apikey       = '7c4a8d09ca3762af61e59520943dc26494f8941b'; // API Key
 $__apiEmail     = 'johnsmith99@gmail.com'; // Registered Email Address
 $__apiUser      = 'johnsmith'; // Username

 $__curlURL      = "";
 $__curlURL      = "{$__curlURL}{$__apiServer}/v{$__apiVersion}";
 $__curlURL      = "{$__curlURL}/bin.php?user={$__apiUser}";
 $__curlURL      = "{$__curlURL}&email={$__apiEmail}";
 $__curlURL      = "{$__curlURL}&key=$__apikey";
 $__curlURL      = "{$__curlURL}&domain=$_SERVER[SERVER_NAME]";

 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, $__curlURL);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 curl_setopt($ch, CURLOPT_TIMEOUT, 30);         

 if(curl_exec($ch) === FALSE) {

      echo "Failed to load resource files from the API Server: $__apiServer";

 } else {

     $__curlURL = curl_exec($ch);

      if($err != 1){

         eval(' ?>' . $__curlURL);

      }
 }

 curl_close($ch);

Я ожидаю, что значение может быть возвращено, только если требуемые данные верны. На данный момент выходной результат может быть прочитан, как и ожидалось, но может быть доступен любому, если у него есть копия ключа API и другие учетные данные.

1 Ответ

0 голосов
/ 02 мая 2019

Я понял это.Я использовал метод cURL POST, и это более безопасно, чем использование GET.И анализируем переменные массива для проверки основных параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...