【发布时间】:2017-08-19 11:23:47
【问题描述】:
我希望构建一个移动应用程序,将信用卡信息发送到 aws-lambda 微服务,然后该微服务将该信息提交给 Stripe。我担心 PCI 合规性/安全性,我想知道我是否缺少某些东西。以下是我的计划:
1) 用户使用符合 PCI 的密码登录 - 并被分配唯一的 ID 并获得 cognito 访问密钥。
2) 用户在移动应用中输入支付信息。然后,该应用程序使用 HTTPS 通过 POST 请求将该信用卡数据发送到经过身份验证的 aws-lambda 实例(api 网关用于创建端点)。
3) 发布请求成功后,应用会删除本地信用卡数据。
4) lambda 实例使用 KMS 解密加密的条带秘密访问密钥。
5) lambda 实例使用 Stripe NodeJS sdk 将数据发送到条带并将条带标记存储在数据库中。
6) Lambda 实例绝不会保存任何信用卡数据 - 它只会将 Stripe 令牌写入数据库。
这里有什么我遗漏的吗?有什么需要注意的吗?
编辑:
附加信息: 信用卡详细信息在应用程序中收集并存储在应用程序状态中,直到它们被删除。 https POST 不使用 Stripe 工具,因为我使用的是 React Native。
【问题讨论】:
-
#2 需要考虑的一件事 --- 您如何收集/发布卡片数据?您是否在使用 Stripe 提供的工具之一—— Elements 或 Checkout,这是移动 SDK 之一?如果您这样做,它应该可以缓解 PCI 合规性问题,因为卡详细信息根本不会通过您的服务器。发布原始 PAN,即使您不保留它们也会使合规变得更加棘手。
-
@duck 这是我主要关心的问题 - 对 lambda 的 POST 请求只是 https;它没有使用 Stripe 的工具。这样做的原因是我正在开发 react native,而 stripe 没有任何 SDK。我应该在这里做点别的吗?例如。加密数据 -> https post -> 在 lambda 中解密?
-
我不是 PCI 专家,但我想到的其他问题是:服务器日志(记录 POST 请求,AWS 是否将这些记录在自己的日志中以跟踪使用情况?)以及如何限制对服务器的物理访问。
-
您是否考虑过使用 Stripe 的 JavaScript API?或这个? blog.bigbinary.com/2015/11/03/…github.com/lrettig/react-native-stripe
-
@Rob 我看过你链接的博客——基本上他们只是使用请求来访问 Stripe 的 api。我不愿意直接从应用程序中执行此操作,原因有两个:(1)它在架构上不优雅(2)我必须在应用程序中嵌入条带密钥。此外,我不能使用 Stripe 的 Javascript SDK,因为它依赖于 NodeJS,而 React Native 不能在其上运行。
标签: stripe-payments aws-lambda pci-compliance aws-cognito