在我正在处理的系统中,我们允许用户存储多张支付卡,然后选择一张在结账时使用。
卡片令牌是卡片的天生标识符,因此它似乎是一个很好的使用密钥(我们在应用程序中不存储任何内容)。
使用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
}
};
答案 0 :(得分:3)
如果您将表单中的付款令牌提交给Braintree而未根据客户ID进行验证,则在表单中包含付款令牌可能会不安全。也就是说,如果攻击者操纵令牌到与您的另一个客户的支付方法令牌相对应的令牌,则另一个客户将被收费。如果您在交易请求中包含客户ID(正如您所做的那样),那么我们将验证令牌是否与客户匹配,因此只要用户无法操纵客户ID和令牌,此方法就是安全的