我只需要存储信用卡的最后 4 位数字
Posted
技术标签:
【中文标题】我只需要存储信用卡的最后 4 位数字【英文标题】:I need to store only last 4 digits of credit card 【发布时间】:2014-09-17 17:30:09 【问题描述】:我正在使用 Braintree 作为支付网关。 我有一个要求,、到期日期(根据 PCI 投诉)。 我已经在 javascript 中实现了前端代码,并且在向服务器发送数据时,信用卡信息被加密。 无论如何我可以在后端获取最后四位数字、到期日期和卡类型,或者我可以解密吗?
<form name="paymentForm" action="/createtransaction" method="post" id="braintree-payment-form">
<p>
<label style="color:white">Card Number</label>
<input type="text" size="20" ng-model="userDetails.number" autocomplete="off" data-encrypted-name="number" />
</p>
<p>
<label style="color:white">CVV</label>
<input type="text" size="4" ng-model="userDetails.cvv" autocomplete="off" data-encrypted-name="cvv" />
</p>
<p>
<label style="color:white">Expiration (MM/YYYY)</label>
<input type="text" size="2" ng-model="userDetails.month" data-encrypted-name="month" /> / <input type="text" size="4" ng-model="userDetails.year" data-encrypted-name="year" />
</p>
<input type="submit" id="submit" />
【问题讨论】:
本文展示了您可以采用的几种不同流程:braintreepayments.com/braintrust/client-side-encryption。你用的是哪一个? 我正在使用客户端加密 【参考方案1】:(披露,我为 Braintree 工作)
由于您使用的是客户端加密,因此您将无法获取信息,因为它在创建交易之前已被加密。但是,一旦您进行了交易,结果对象将包含卡号的前六位/后四位数字和到期日期。然后,您可以将这些值存储在您的数据库中。
它看起来像:
Result<Transaction> result = gateway.transaction().sale(
...
);
Transaction transaction = result.getTarget();
CreditCard creditCart = transaction.getCreditCard();
String last4 = creditCard.getLast4();
String expiration = creditCard.getExpirationDate();
【讨论】:
【参考方案2】:由于您使用的是 Braintree 的 客户端加密 流程,根据他们的文档,您无法访问敏感信息(即信用卡号)的未加密版本。这样做是有目的的,以便您可以降低安全风险并保持 PCI 合规性。
布伦特里states in this post:
一旦用户按下包含他们的表单上的“提交”按钮 信用卡信息,您使用 Braintree 提供的 JavaScript 在表单发布到之前加密敏感字段的库 你的服务器。敏感的非加密数据不包含在 提交的表格,因此永远不会通过您的 系统。但是,您可以使用所有其他字段。这意味着 您可以执行自定义验证、格式化和记录到您的 心的内容,而不会将自己暴露于安全风险和 拥有未加密信用卡的额外 PCI 合规性要求 数据通过您的环境。
另请注意,由于您无权访问解密密钥,因此无法解密数据。
如果您想访问实际敏感的信用卡数据,那么我认为您必须采取不同的方法。 服务器到服务器 流程看起来是您最好的选择。 Braintree 表示:
S2S 的工作方式类似于通过 HTTP 访问任何 API。第一的, 您在您的网站上创建一个表单,用户在其中输入他们的信用 卡数据、账单信息等。当用户提交表单时, 内容被发送到您的服务器。使用您收到的数据, 您使用他们的客户端库之一对 Braintree 进行 API 调用, 检查结果并向您的用户显示必要的信息。
【讨论】:
以上是关于我只需要存储信用卡的最后 4 位数字的主要内容,如果未能解决你的问题,请参考以下文章