首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前端<->后端:安全条带集成

前端<->后端:安全条带集成
EN

Stack Overflow用户
提问于 2021-08-19 13:12:13
回答 2查看 597关注 0票数 2

我的后端代码通常包装客户机调用,并通过如下端点公开它们:

代码语言:javascript
复制
import stripe
stripe.key = "API_KEY"

def wrap_create_customer():
    return stripe.create_customer()

显然,只需反向工程我的后端API并开始调用它来读取客户数据、进程费用等就可以了。实际上,Stripe API是通过我的后端公开的,因为前端-后端连接是公开的。(就像Stripe教程中的所有后端初学者代码一样)。

如何确保客户端后端通信的安全?

我的前端是一个公共的,静态的网站。它没有通过后端进行身份验证。为了防止来自国外的请求,我要求请求的来源属于我的网络域。

问:但如果这是修复,这将意味着,验证源将是一个充分的条件,以确定真正的所有者的请求。那么为什么Stripe不让我们将代码完全移动到客户端呢?

需要Stripe密钥的唯一原因是对请求进行身份验证。为什么不直接在Stripe仪表板中添加允许的起源,而不是要求密钥呢?

Q2:是不是后端代码背后的全部原因,只是为了向公众隐藏Stripe密钥?即使后端可以通过“非安全”端点访问?

Q3:我应该采取哪些步骤来实现一个安全的客户机<->后端集成,以便保证我的后端知道请求确实是由客户机提出的。(客户端是前端应用程序)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-26 17:53:20

通常,(我从未特别使用过stripe,但与其他类似的提供者)这样做如下:

  • 前端包括一个SDK,它是用一个vendorId初始化的,可能还有一些productIds。这些信息没有什么秘密。因为即使其他人认识他们,他唯一能做的就是从你的条纹账户购买物品。
  • 当要进行结帐时,客户端向支付提供者发送checkout/{venderId}/{productId}请求。有些提供者只提供“结帐链接”,其中客户被重定向到提供商系统上托管的安全页面。这处理所有的支付相关的东西(信用卡的安全输入,.你真的不想知道客户的信用卡信息!)
  • 一旦结帐完成,支付提供商将调用后端的web钩子,向您发送关于客户的所有必要信息(名称、购买项目、交易id、.)
  • 您可以在后端处理这些信息,并将其存储在某个地方。您可以将一些信息提供给前端,例如通过事务id。
  • 字体还将从SDK获得事务id,因此它可以使用此事务id查询后端。你想要/需要向前台公开什么信息完全取决于你。

通常,绝对没有必要通过API公开后端和paymentprovider之间的任何其他通信,更不用说将数据从支付提供者转发到前端了。特别是,如果任何人都可以访问您的API而不进行身份验证。当然,您可能也需要一些管理API访问,但我们同意,这当然是通过一些强大的身份验证来保护的。

票数 2
EN

Stack Overflow用户

发布于 2021-08-29 05:36:39

为了防止恶意用户欺诈/滥用您的Stripe帐户(如卡片测试),您需要保护一些由Stripe驱动的端点。Stripe确实推荐了几个缓解,包括用户身份验证、速率限制和上限。根据您的应用程序和业务,您可能需要其中的几个组合。

请注意,用户身份验证可以使用各种自托管或第三方驱动的工具添加到静态站点。GatsbyJS有一个非常好的文档与多个例子。几乎任何纯粹的客户端技术都可能被欺骗(比如源程序、引用程序等),因此这些技术本身并不足以保护后端服务器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68848541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档