亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PayPal Checkout:僅使用客戶端代碼接收付款是否安全?

PayPal Checkout:僅使用客戶端代碼接收付款是否安全?

慕標5832272 2022-11-27 17:19:54
我正在使用 PayPal API 將支付選項添加到我的網站。在他們的教程中,他們正在渲染按鈕并完全在客戶端使用 JavaScript 設置事務。這是示例代碼:<script>  paypal.Buttons({    createOrder: function(data, actions) {      // This function sets up the details of the transaction, including the amount and line item details.      return actions.order.create({        purchase_units: [{          amount: {            value: '0.01'          }        }]      });    },    onApprove: function(data, actions) {      // This function captures the funds from the transaction.      return actions.order.capture().then(function(details) {        // This function shows a transaction success message to your buyer.        alert('Transaction completed by ' + details.payer.name.given_name);      });    }  }).render('#paypal-button-container');  //This function displays Smart Payment Buttons on your web page.</script>這安全嗎?用戶只需在自己這邊的代碼中更改支付金額,就可以減少支付。即使我將客戶端代碼設置為在交易成功后發送交易 ID(即在 onApprove 發出 POST 請求),以便我可以讓服務器端代碼檢查發送的金額是否正確,客戶端仍然可以更改他這邊的代碼以發送虛假的交易 ID。在交付產品之前,我基本上需要一種機制來檢查我是否確實收到了正確的數量。我顯然需要在服務器端進行此檢查,但我無法找到一種安全的方法來執行此操作,因為我需要從客戶端獲取一些可能是假的信息。我如何防止用戶通過發送過去的交易 ID 假裝已經付款?
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

您是正確的,用戶始終可以更改客戶端代碼中的金額,并發送較低金額的付款。這就是客戶端付款的工作方式。

任何用于跟蹤哪些付款是真實的以及正確金額的邏輯都必須在您的服務器上。

對于 PayPal Checkout,這是您應該使用的前端 UI:https ://developer.paypal.com/demo/checkout/#/pattern/server

您的服務器上需要兩條相應的路線,一條用于“創建訂單”,一條用于“捕獲訂單”。您可以使用其中一個Checkout-lanuagename-SDK(編輯:雖然這些現在已被棄用)用于路由對 PayPal 的 API 調用,或者您自己的 HTTPS 實現,首先獲取訪問令牌然后進行調用(有一個完整的堆棧主要 PayPal Checkout 指南中的 node.js 中的示例,但它可以使用任何后端服務器語言來完成)。

這兩個路由都應該只返回 JSON 數據(沒有 HTML 或文本)。在第二條路線中,當捕獲 API 成功時,您應該驗證金額是否正確并將其生成的付款詳細信息存儲在您的數據庫中(特別purchase_units[0].payments.captures[0].id是 PayPal 交易 ID)并執行任何必要的業務邏輯(例如發送確認電子郵件或在將返回的 JSON 轉發給前端調用者之前立即保留產品) 。如果發生錯誤,也轉發它的 JSON 詳細信息,因為前端必須處理此類情況。


查看完整回答
反對 回復 2022-11-27
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

對不起,但這對我來說似乎仍然很不安全。一旦您在 paypal javascript 標簽中提供了您的客戶端 ID,那么任何優秀的黑客都可以在 Google 或 Firefox 等中使用 devtools,并將您的 paypal.buttons 代碼替換為他們自己的 paypal.buttons 代碼,然后愉快地將交易發送到 paypal無需使用您的客戶端代碼或服務器代碼。

我對這個理論做了一些測試,在五分鐘或更短的時間內,我能夠重做客戶端 javascript 中的代碼,并為我購買的產品支付我想要的任何費用(這是在測試環境中)。

我在這里缺少什么不會使客戶端代碼完全不安全。


查看完整回答
反對 回復 2022-11-27
  • 2 回答
  • 0 關注
  • 224 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號