Как авторизовать посты 000webhost?

Я использую 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? Это крайне ненадежно. Есть ли способ сделать так, чтобы принимались только данные моего локального сервера, или, может быть, я могу каким-то образом зашифровать данные? Благодарю.

-1

Решение

Чтобы уточнить, ваши данные уже зашифрованы с использованием https: //. Существует множество способов аутентификации вашего трафика, но простым способом было бы добавить «закрытый ключ» в ваше сообщение.

Так что вы могли бы сделать

$post = array('key' => 'some private key', 'text' => ... )

И на сервере проверьте, чтобы грязные данные не проходили

if ($_POST['key'] != 'the key you made')
die()
2

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

Для проверки подлинности ваших данных, полученных по вашему запросу Curl, вне всяких сомнений в отношении их подлинности, вы можете использовать систему HMAC, которая является Код аутентификации сообщений на основе хеша а также то, что TLS (HTTPS) использует для проверки, что полученные данные совпадают с данными, отправленными при передаче.

HMAC — это небольшой набор данных, который помогает аутентифицировать природу сообщения; он защищает целостность (и, следовательно, подлинность) сообщения.

Метод таков:

    1. Соберите данные, которые вы отправляете, в единую строку / массив / значение объекта.
    1. Добавить Секретный ключ
    1. Создать гашиш объединенных данных + секретный ключ. Это HMAC
    1. Отправить данные «Полезная нагрузка» и HMAC для получателя.
    1. Делать НЕ отправить секретный ключ.
    1. Получатель затем собирает полезная нагрузка, и добавляет свою собственную копию секретного ключа и генерирует хэш, как это сделал отправитель.
    1. Если локальный HMAC равен HMAC, отправленному по-мудрому, это показывает, что отправленные данные полезной нагрузки совпадают с полученными данными полезной нагрузки.
    1. Большим преимуществом этого метода является то, что в отличие от ответ ma11ocs Ваш секретный ключ никогда не передается и не передается в данных (полезная нагрузка) это защищает.

Секретный ключ — это уникальный фрагмент информации, который используется для вычисления HMAC и известен как отправителю, так и получателю сообщения. но никогда не отправляется в сообщении. Длина этого ключа зависит от используемого вами алгоритма. Некоторые алгоритмы лучше, чем другие, такие как MD5 не следует использовать, поскольку они слишком быстрые и легко исследуются.

2

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