Я использую curl в php для публикации данных с моего локального сервера на сервер веб-хостинга:
$post = array('test' => 'this is a test' );
$url = "https://my-app.000webhostapp.com";
$curlSesh = curl_init();
curl_setopt($curlSesh, CURLOPT_URL, $url);
curl_setopt($curlSesh, CURLOPT_POST, true);
curl_setopt($curlSesh, CURLOPT_POSTFIELDS, $post);
curl_setopt($curlSesh, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curlSesh);
curl_close($curlSesh);
echo "response: ";
echo $response;
if ($response == "validate post")echo ' post has been validated';
На моем сервере 000webhost я принимаю массив, отправленный в $ post с использованием содержимого файла:
file_put_contents('incomingData.txt', $_POST["test"]. "\n", FILE_APPEND );
Разумеется, это означает, что любой может отправить запрос на публикацию на мой сервер веб-хоста с ключом массива ‘test’, и он будет помещен в мой файл входящий_данных.txt? Это крайне ненадежно. Есть ли способ сделать так, чтобы принимались только данные моего локального сервера, или, может быть, я могу каким-то образом зашифровать данные? Благодарю.
Чтобы уточнить, ваши данные уже зашифрованы с использованием https: //. Существует множество способов аутентификации вашего трафика, но простым способом было бы добавить «закрытый ключ» в ваше сообщение.
Так что вы могли бы сделать
$post = array('key' => 'some private key', 'text' => ... )
И на сервере проверьте, чтобы грязные данные не проходили
if ($_POST['key'] != 'the key you made')
die()
Для проверки подлинности ваших данных, полученных по вашему запросу Curl, вне всяких сомнений в отношении их подлинности, вы можете использовать систему HMAC, которая является Код аутентификации сообщений на основе хеша а также то, что TLS (HTTPS) использует для проверки, что полученные данные совпадают с данными, отправленными при передаче.
HMAC — это небольшой набор данных, который помогает аутентифицировать природу сообщения; он защищает целостность (и, следовательно, подлинность) сообщения.
Метод таков:
Секретный ключ — это уникальный фрагмент информации, который используется для вычисления HMAC и известен как отправителю, так и получателю сообщения. но никогда не отправляется в сообщении. Длина этого ключа зависит от используемого вами алгоритма. Некоторые алгоритмы лучше, чем другие, такие как MD5
не следует использовать, поскольку они слишком быстрые и легко исследуются.