gpt4 book ai didi

javascript - Paypal 快速结帐。在 onAuthorize 函数中将数据存储在 DB 中是否安全?

转载 作者:行者123 更新时间:2023-11-29 23:29:41 25 4
gpt4 key购买 nike

我在网站的支付流程中遇到了一个很大的安全问题。

我有一个 nodejs 服务器和一个带有 .js 的标准 html 页面,它使用 Paypal Express 结账。

鉴于我的网络应用程序的性质,我的服务器必须保存到期付款的数据。关键是,即使使用客户端-服务器架构进行支付,数据流也是通过客户端浏览器进行的。

问题是Paypal Express结账使用新窗口执行支付,所以数据必须通过客户端!(也可能不会,等帖子结束)

这是我的客户端代码:

paypal.Button.render({

env : 'sandbox',
commit: true,
style: {
size: 'medium',
color: 'gold',
shape: 'pill',
label: 'checkout'
},
locale: 'en_US',
payment: function() {
nickname = $("#nickname").val();
amount = $("#amount").val();
description = $("#description").val();
data = {
"nickname" : nickname,
"amount" : amount,
"description" : description
};
return new paypal.Promise(function(resolve, reject) {
jQuery.post("/newPayment", data).done(function(data){
console.log("HEI I GOT THE PAYMENT JSON = " + data);
parsed_data = JSON.parse(data);
resolve(parsed_data['id']);
});
});
},

onAuthorize: function(data, actions) {
// HERE IS WHERE I SHOULD CALL MY SERVER TO INSERT DATA INTO DB
console.log("PAYMENT SUCCESSFUL");
return actions.payment.execute();
},
onError: function(data, actions){
console.log("ERRORRRRRR");
$("#warning").show();
}

}, '#paypal-button');

如果您查看我的评论行,就会发现 BIIIG 问题。稍微熟练的人都可以复制粘贴此 .js 并向我的服务器确认虚假付款,这会将虚假数据插入数据库。

我认为解决此问题的唯一方法是首先(当用户单击“付款”按钮时)在数据库中创建一个“待处理”付款,然后在获得授权后使用数据调用我的服务器并检查 2 付款是否是一样的。

但是这个解决方案还有另一个问题,没有什么可以确保我的服务器实际执行支付,攻击者可以执行第一次 POST 到我的服务器来创建支付,然后(即使在恢复“ID”的相同功能中parsed_data['id']) 使用正确的 ID 执行第二个 POST;他可以在不通过 paypal 窗口的情况下完成所有这些操作。

我的问题是:有没有办法从我的服务器恢复与我的 Paypal 帐户相关的付款?

或者,我是否遗漏了 PaypalSDK 中的某些内容?有没有办法让 PAYPAL 在执行付款时调用我的服务器?

最佳答案

你是对的,客户端没有是安全的。您应该让您的服务器验证付款是否成功(以及正确的金额等)。PayPal 具有用于服务器的 REST API 和用于特定语言的 SDK。

关于javascript - Paypal 快速结帐。在 onAuthorize 函数中将数据存储在 DB 中是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47799594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com