Для решения только для PHP:
Если вы можете хранить секрет (с обеих сторон), то вы можете использовать самореализуемый вариант (да, вариант) Код аутентификации сообщения с хэш-ключом (HMAC или KHMAC).
Концепция заключается в том, что если у вас есть один и тот же секрет на обоих концах, вы можете хешировать (сообщение + секрет) на передающей стороне и хеш (сообщение + секрет) на принимающей стороне. Если хэши совпадают, у вас есть действительное сообщение.
Секрет - это ключ (каламбур). Поскольку без секрета невозможно, чтобы злоумышленник мог изменить сообщение И сгенерировать новый хеш, который будет проверяться на принимающей стороне.
Вот пример кода PHP:
// On the sending end:
define('SECRET', '12734981273912379128739128739127938794729327492');
$message = 'your-message';
$packet = $message . sha1($message . SECRET);
// On the receiving end:
define('SECRET', '12734981273912379128739128739127938794729327492');
$message = substr($packet, 0, -40);
if(sha1($message . SECRET) != substr($packet, -40))
throw new Exception("Message Authentication failed!")
else
do_something_with($message);
Если вы хотите, чтобы хакер повторно опубликовал одно и то же сообщение, он мог добавить случайный идентификатор запроса к каждому запросу и убедиться, что один и тот же хэш НИКОГДА не принимается.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: это, как и со всем чувствительным к безопасности кодом, должно быть проверено и проверено перед доверием к конфиденциальным данным. Проведите исследование по теме или, что еще лучше, используйте существующую библиотеку, которая обрабатывает этот тип проверки + аутентификация.