API — Как проверить, разрешить и запретить доменному имени доступ к php-файлу через curl

Я хочу иметь возможность проверить, откуда поступил запрос cURL.

Итак, вот API, который будет использовать клиент:

$url_api = 'http://apiwebsite.com/api.php';
$post_data = array(
'test' => 'test',
'test2' => 'test2',
'test3' => 'test3',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_api);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
if($output === FALSE){echo "cURL Error: " . curl_error($ch);}
curl_close($ch);
print_r($output);

А потом, на apiwebsite.com/api.php Мне нужно код, чтобы проверить происхождение запроса.

Скажем так website1.com запросил код с помощью curl apiwebsite.com/api.php

Как я могу убедиться, что доменное имя действительно website1.com ? Как я могу разрешить только API доступ к этому конкретному доменному имени?

Я не хочу отправлять по почте или где-либо еще из кода клиента, потому что это может быть легко взломано / взломано. Я хочу проверить прямо из apiwebsite.com/api.php код, если домен, запрашивающий API, действительно website1.com

Является ли это возможным?

Если нет, могу ли я хотя бы проверить IP-адрес? Или отслеживать что-то вроде серверов имен?

Спасибо.

PS: curl безопасно для передачи паролей?

0

Решение

Используйте .htaccess, чтобы разрешить API только «website1.com». Вам не нужно ничего проверять в вашем файле API.

используйте это в своем файле htaccess

   <files api.php>
order deny,allow
deny from all
allow from 0.0.0.0 (Ip for website1.com)
allow from 1.1.1.1 (Ip for your server)
allow from 1.1.1.1 (Ip for your work/personal/ network)
</files>

Последние две строки — это доступ к api.php для себя.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]