Платёжные системы используют подпись HMAC (или JWT). Провайдер и ваш сервер имеют общий секретный ключ. Провайдер вычисляет подпись тела запроса и передаёт её в заголовке. Ваш сервер перевычисляет подпись и сравнивает. Если подписи совпадают — запрос подлинный.
Почему не подходят другие:
IP может быть подделан или динамический.
Пароль в теле может быть перехвачен (не передавайте в открытом виде).
Ограничение по внутренней сети не работает для внешних webhook.
Реальный пример: Stripe подписывает каждый callback заголовком
Stripe-Signature. Ваш сервер проверяет подпись, прежде чем обрабатывать платёж.Вывод: В требованиях к интеграции аналитик должен указать: «Callback-запросы должны содержать HMAC-подпись, вычисленную с использованием секретного ключа».