在 HTML 中呈现客户卡令牌是否安全
Is it safe to render customer card token in HTML
在我正在使用的系统中,我们允许用户存储的不仅仅是一张支付卡,然后 select 一张在结账时使用。
卡令牌是卡的自然标识符,因此它似乎是一个很好用的密钥(我们的应用程序中不存储任何内容)。
在 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
}
};
如果您将支付令牌提交给 Braintree 而未根据客户 ID 对其进行验证,则在表单中包含支付令牌可能是不安全的。也就是说,如果攻击者将令牌操纵为与您客户的另一个支付方式令牌相对应的令牌,则将向另一个客户收费。如果您在交易请求中包含客户 ID(正如您所做的那样),那么我们将验证令牌是否与客户匹配,因此只要用户不能同时操纵客户 ID 和令牌,此方法就是安全的.
在我正在使用的系统中,我们允许用户存储的不仅仅是一张支付卡,然后 select 一张在结账时使用。
卡令牌是卡的自然标识符,因此它似乎是一个很好用的密钥(我们的应用程序中不存储任何内容)。
在 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
}
};
如果您将支付令牌提交给 Braintree 而未根据客户 ID 对其进行验证,则在表单中包含支付令牌可能是不安全的。也就是说,如果攻击者将令牌操纵为与您客户的另一个支付方式令牌相对应的令牌,则将向另一个客户收费。如果您在交易请求中包含客户 ID(正如您所做的那样),那么我们将验证令牌是否与客户匹配,因此只要用户不能同时操纵客户 ID 和令牌,此方法就是安全的.