【问题标题】:Is it safe to render customer card token in HTML在 HTML 中呈现客户卡令牌是否安全
【发布时间】:2015-04-04 07:46:42
【问题描述】:

在我正在开发的系统中,我们允许用户存储多张支付卡,然后在结账时选择一张使用。

卡令牌是卡的自然标识符,因此它似乎是一个很好的使用密钥(我们在应用程序中不存储任何内容)。

以 HTML 格式渲染到卡片令牌是否安全,以便我们识别要使用的卡片或存在安全问题?

请注意,我将客户 ID 传递给网关以确保卡属于客户:

var request = new Braintree.TransactionRequest
            {
                Amount = order.Total,
                CustomerId = braintreeCustomerId,
                PaymentMethodNonce = nonce,
                PaymentMethodToken = cardToken,
                OrderId = order.OrderId,
                Options = new Braintree.TransactionOptionsRequest { 
                    StoreInVault = saveCard, 
                    SubmitForSettlement = false
                }
            };

【问题讨论】:

  • 在处理信用卡数据时总是存在安全问题,显然,无论您将其存储在何处。
  • 这就是我们根本不存储它的原因。我们委托给支付提供商。我们只是渲染了“最后四位”的列表,但是我需要一种识别卡的方法,最后 4 位或过期不是好键。

标签: html payment-gateway braintree


【解决方案1】:

如果您将支付令牌提交给 Braintree 而不根据客户 ID 进行验证,则在表单中包含支付令牌可能是不安全的。也就是说,如果攻击者将令牌操纵为与您客户的另一个支付方式令牌相对应的令牌,则将向另一位客户收费。如果您在交易请求中包含客户 ID(如您所做的那样),那么我们将验证令牌与客户匹配,因此只要用户不能同时操纵客户 ID 和令牌,此方法是安全的.

【讨论】:

  • 非常感谢,正是我想知道的
  • 嗨@cdeist 我更新了我的问题以包含交易请求。这将确保该卡属于客户。这是正确的方法吗?谢谢
  • 其实你可以。如果我尝试以您描述的方式“攻击”系统,我会得到“无法同时提供 payment_method_token 和 customer_id,除非 payment_method 属于客户。”
  • 删除了我以前的 cmets 并将它们合并到原始答案中以清楚起见-谢谢!
猜你喜欢
  • 2019-11-13
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 2022-11-10
  • 1970-01-01
  • 2015-12-19
相关资源
最近更新 更多