Я хочу иметь возможность проверить, откуда поступил запрос 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 безопасно для передачи паролей?
Используйте .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
для себя.
Других решений пока нет …