哪些Braintree业务对象ID可以提供给最终用户

问题描述

Braintree API将各种内部ID返回到业务对象,包括SubscriptionPlanPaymentMethod等ID。与最终用户的应用程序共享这些ID(在用户设备上运行的前端代码)时是否存在任何安全问题? (最终用户不会看到这些ID,但它们会通过电线传输。)

详细示例:

用户将付款方式添加到应用中。 App服务器将请求转发到Braintree,例如:

val result = gateway.paymentMethod.create(
            new PaymentMethodRequest()
              .customerId(user.billing.get.braintree.customerID)
              .paymentMethodNonce(nonce)
              .billingAddressId(user.billing.get.braintree.addressID.get)
              .options()
              .makeDefault(true)
              .verifyCard(true)
              .failOnDuplicatePaymentMethod(false)
              .done()
          )

然后按以下方式处理结果:

Option(result.getTarget)
            .map {
              case card: CreditCard =>
                braintreePaymentMethod(
                  card.getClass.getCanonicalName,card.getToken,card.getimageUrl,card.isDefault,"ending " + card.getLast4
                )
            }
            .getorElse(throw Payments.Exception.Braintree(result.getMessage))

card.getToken返回界面中付款方式的令牌:


public interface PaymentMethod {

    String getToken();
    boolean isDefault();
    String getimageUrl();
    String getCustomerId();
    List<Subscription> getSubscriptions();
}

然后由getToken获取的上述令牌用于检查付款方式是否存在,此外,还用于删除,列出和更新付款方式。

在内部,在该应用中,此令牌还可以用于标识付款方式。

概述:是否存在与用户共享此令牌的安全问题?

解决方法

Braintree标识符和令牌与用户无关或无关。没有理由分享它们。您只需出示卡片的最后4张,以供以后参考。

,

与用户共享大脑树标识符没有任何意义。

如果您想为这些付款或地址提供某些功能,则这些应该通过您的api进行。

理想情况下,您不应将Braintree域模型直接暴露给用户(这是几乎所有第三方域模型的标准做法)。您可以在Braintree域模型之上创建自己的域模型。您所有的api都将围绕您的域模型展开,该模型将替代braintree域模型。

,

如果必须使用它,那很好。中间件可以用来确保安全。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...