【问题标题】:Save credit card number on javascript variable在javascript变量上保存信用卡号
【发布时间】:2016-06-27 07:03:34
【问题描述】:

我想知道执行以下操作是否安全:

我有一个多页表单(使用 jquery 完成,因此页面之间没有服务器请求)。

在第二页,用户输入他的信用卡信息。 在第三页(最后一页),用户确认在前两页输入的所有信息(如摘要)。

当用户点击第二页的下一步按钮时,会运行以下脚本:

$("#payment-next").click(function(){
    var ccNumber = $("#card_number").val();
    //If credit card invalid
    if(!Stripe.card.validateCardNumber(ccNumber)){
      //Throw error 
    }
});

ccNumber 变量也用于确认所有信息的第三页。

将信用卡号存储在ccNumber 变量中是否正确且安全?该变量存储在哪里?

【问题讨论】:

  • ccNumber 为局部变量,点击结束后将不存在。但是,您可以以某种方式保存变量,有很多方法,您可以查看本地存储,如果您愿意,甚至可以查看会话。
  • 感谢克里斯。如果我在该页面的脚本上将 ccNumber 设为全局变量,它是否可以安全地被某人访问?
  • 这是单页应用吗?
  • 我上面描述的都发生在一页中

标签: javascript jquery security stripe-payments


【解决方案1】:

在客户端方面真的做不了那么多,只要我认为它是异步的并且您在输入上没有名称属性。

我真的不会让它全球化,请查看Stripe.js

https://stripe.com/docs/custom-form

https://stripe.com/docs/stripe.js/switching.

【讨论】:

  • OP 在客户端的浏览器上完成这一切。上面提出的方法安全地将卡片数据发布到 Stripe,Stripe 将返回一个卡片对象或一个错误对象。同时符合 PCI 标准。
  • Stripe 就是这样做的,它集成到您​​的应用程序/网站中,因此用户不必离开您的网站。 OP 显然在使用Stripe.card.validateCardNumber,它使用Luhn algorithm 检查CC 号码,并询问是否可以将号码保持在同一页面上,没有重定向,只是动态更改内容,当然可以,有没有额外的安全风险。
  • 自定义表单不是重定向结帐。使用 stripe/jquery.payment.js 你可以做所有你想要的动态前端,而不用接触卡片数据。
【解决方案2】:

如果您不重新加载页面,您可以将它存储在变量中,并且它永远不会进入网络是安全的。但是,您在 click 函数中声明了 ccNumber,在它之外该变量将不存在。像这样使用全局声明:

var ccNumber;
$("#payment-next").click(function(){
   ccNumber = $("#card_number").val();
  //If credit card invalid
   if(!Stripe.card.validateCardNumber(ccNumber)){
      //Throw error 
    }
});
// here and after ccNumber will be filled after every click you can check by console.log(ccNumber)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2011-05-17
    • 2016-10-23
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多