在javascript变量上保存信用卡号

在javascript变量上保存信用卡号,javascript,jquery,security,stripe-payments,Javascript,Jquery,Security,Stripe Payments,我想知道这样做是否安全: 我有一个多页面表单(使用jquery完成,因此页面之间没有服务器请求) 在第二页,用户输入其信用卡信息。 在第三页(最后一页),用户确认前两页中输入的所有信息(如摘要) 当用户单击第二页上的“下一步”按钮时,将运行以下脚本: $("#payment-next").click(function(){ var ccNumber = $("#card_number").val(); //If credit card invalid if(!Stripe

我想知道这样做是否安全:

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

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

当用户单击第二页上的“下一步”按钮时,将运行以下脚本:

$("#payment-next").click(function(){
    var ccNumber = $("#card_number").val();
    //If credit card invalid
    if(!Stripe.card.validateCardNumber(ccNumber)){
      //Throw error 
    }
});
第三页也使用了
ccNumber
变量,所有信息均已确认


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

若不重新加载页面,则可以将其存储在变量中,并且它是安全的,因为它永远不会进入网络。但是,您在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)

对于客户端,我们不能做太多的工作,只要它是简单的,并且输入上没有name属性

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


.

ccNumber是一个局部变量,在单击结束后将不存在。但是,您可以以某种方式保存变量,有很多方法,如果您喜欢,您可以查看本地存储,甚至会话。谢谢Chris。如果我在该页面的脚本中将ccNumber设置为全局变量,那么它是否安全,不会被其他人访问?这是一个单页应用程序吗?我在上面描述的“一页中完成所有操作”是在客户端的浏览器上完成的。上述方法将卡数据安全地发布到Stripe,Stripe将返回一个card对象或errors对象。Stripe就是这样做的,它集成到你的应用程序/站点中,用户不必离开你的站点。OP显然是在使用Stripe.card.validateCardNumber来检查CC号码,并询问是否可以将号码保留在同一页上,不重定向,只是动态更改内容,当然,这不会增加安全风险。自定义表单不是重定向签出。使用stripe/jquery.payment.js,您可以在不接触卡数据的情况下完成所有需要的动态前端。