Как обеспечить безопасность в Stripe webhooks?

Я буду создавать веб-хуки Stripe и хочу знать, как обеспечить безопасность, чтобы только Stripe мог получить доступ к моему URL?

Я использую Laravel с библиотекой Stripe.

5

Решение

Как отмечено в документация:

Если вас беспокоит безопасность или важно подтвердить, что Stripe отправил веб-крючок, вы должны использовать только тот идентификатор, который был отправлен в ваш веб-крючок, и запрашивать оставшуюся информацию непосредственно у API Stripe. Мы также советуем вам защититься от повторных атак, записывая, какие события вы получаете, и никогда не обрабатывая события дважды.

Другими словами, нет способа подтвердить, откуда поступил запрос. Таким образом, не доверяйте никаким его данным, кроме идентификатора любого данного элемента. Затем вы сами связываетесь с API Stripe, запрашивая элемент с указанным идентификатором. Таким образом, вы узнаете, откуда вы берете свои данные, и вызов webhook, по сути, просто становится уведомлением, сообщающим вам, что вы должны зарегистрироваться с помощью API.

13

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

На самом деле вы можете ограничить доступ к своим веб-зацепкам только для IP-адресов Stripe. Вот почему Stripe обновил список ips веб-хуков.

https://stripe.com/docs/ips

Я просто сделал это для проекта с использованием Laravel и Stripe. Вы можете сделать что-то вроде:

//Only accept connections from stripe ips.//Save stripe info for 24 hours for performance.
$stripe_webhooks_ips = Cache::remember('stripe_webhooks_ips', 1440, function()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'https://stripe.com/files/ips/ips_webhooks.json');
$result = curl_exec($ch);
curl_close($ch);

$json_result = json_decode($result,true);

return $json_result['WEBHOOKS'];
});if(in_array($_SERVER['REMOTE_ADDR'],$stripe_webhooks_ips)) {
//Your Code Here.
}

О безопасности переменной remote_addr:
Безопасно ли доверять $ _SERVER [‘REMOTE_ADDR’]?

Не забудьте принять дополнительные меры для получения исходного IP-адреса, если вы находитесь за прокси-сервером или услугой CDN, такой как Cloudfare и т. Д.

2

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