shi*_*vam 8 ruby ruby-on-rails webhooks stripe-payments
我的ruby-on-rails应用程序使用条带进行卡支付.Stripe提供了一些webhooks,通过它可以联系我的应用程序,并提供有关每个事务的详细信息 - 成功或失败.
为此,我在我的控制器中有这样的事情:
class StripeController < ApplicationController
def webhook
data_json = JSON.parse request.body.read
p data_json['data']['object']['customer']
end
Run Code Online (Sandbox Code Playgroud)
我的问题是如何验证此webhook的真实性?根据我的知识和理解,人们很容易模仿这种情况(中间人攻击).
Sub*_*ial 10
来自Stripe的webhooks文档:
如果担心安全问题,或者确认Stripe发送webhook很重要,您应该只使用webhook中发送的ID,并应直接从Stripe API请求剩余的详细信息.
宝石stripe_event以不同的方式覆盖它.
保护您的webhook端点是通过stripe_eventgem中的基本HTTP身份验证完成的.
如果只有Stripe知道基本的身份验证密码,这可以确保请求真正来自Stripe.这是你做的:
安排在应用程序的环境变量或secrets.yml文件中提供的密钥.
将StripeEvent配置为要求将该密钥用作基本身份验证密码,使用以下代码:
StripeEvent.authentication_secret = ENV['STRIPE_WEBHOOK_SECRET']
在Stripe的设置中指定webhook的URL时,请在URL中包含密码作为密码,以及任何用户名:
https://stripe:my-secret-key@myapplication.com/my-webhook-path
如果您的webhook端点是通过SSL访问的,那么这只是真正安全的,Stripe强烈建议.
您可以basic http authentication通过将webhook设置为以下网址来启用条带化webhook事件
https://username:password@myapplication.com/my-webhook-path
Run Code Online (Sandbox Code Playgroud)
这将导致Authorization标题为
Basic encode64(username:password)
Run Code Online (Sandbox Code Playgroud)
例如通过将webhook设置为以下网址
https://admin:123456@myapplication.com/my-webhook-path
Run Code Online (Sandbox Code Playgroud)
您将在入站请求中获得此标头
Basic YWRtaW46MTIzNDU2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3091 次 |
| 最近记录: |