我的后端代码通常包装客户机调用,并通过如下端点公开它们:
import stripe
stripe.key = "API_KEY"
def wrap_create_customer():
return stripe.create_customer()显然,只需反向工程我的后端API并开始调用它来读取客户数据、进程费用等就可以了。实际上,Stripe API是通过我的后端公开的,因为前端-后端连接是公开的。(就像Stripe教程中的所有后端初学者代码一样)。
如何确保客户端后端通信的安全?
我的前端是一个公共的,静态的网站。它没有通过后端进行身份验证。为了防止来自国外的请求,我要求请求的来源属于我的网络域。
问:但如果这是修复,这将意味着,验证源将是一个充分的条件,以确定真正的所有者的请求。那么为什么Stripe不让我们将代码完全移动到客户端呢?
需要Stripe密钥的唯一原因是对请求进行身份验证。为什么不直接在Stripe仪表板中添加允许的起源,而不是要求密钥呢?
Q2:是不是后端代码背后的全部原因,只是为了向公众隐藏Stripe密钥?即使后端可以通过“非安全”端点访问?
Q3:我应该采取哪些步骤来实现一个安全的客户机<->后端集成,以便保证我的后端知道请求确实是由客户机提出的。(客户端是前端应用程序)。
发布于 2021-08-26 17:53:20
通常,(我从未特别使用过stripe,但与其他类似的提供者)这样做如下:
vendorId初始化的,可能还有一些productIds。这些信息没有什么秘密。因为即使其他人认识他们,他唯一能做的就是从你的条纹账户购买物品。checkout/{venderId}/{productId}请求。有些提供者只提供“结帐链接”,其中客户被重定向到提供商系统上托管的安全页面。这处理所有的支付相关的东西(信用卡的安全输入,.你真的不想知道客户的信用卡信息!)通常,绝对没有必要通过API公开后端和paymentprovider之间的任何其他通信,更不用说将数据从支付提供者转发到前端了。特别是,如果任何人都可以访问您的API而不进行身份验证。当然,您可能也需要一些管理API访问,但我们同意,这当然是通过一些强大的身份验证来保护的。
https://stackoverflow.com/questions/68848541
复制相似问题