簡體   English   中英

將Stripe收費ID和關聯帳戶的帳戶ID暴露給客戶端是否安全?

[英]Is it safe to expose Stripe charge id and account Id of connected account to client side?

我有一個后端正在執行的ajax調用,我想知道將charge id和已connected account id公開給客戶端是否安全?

我在瀏覽器端沒有任何秘密密鑰或任何東西。

謝謝!

單擊退款按鈕后,我稱之為:

$.ajax({
            type: "POST",
            data: {amount: pennies.toFixed(0), charge: chargeId, account: accountId},
            url: "/refund",
            success: function(data){
          //f.e. set to modal
          $('#refund_dialog').modal('hide')
            $('#refund_dialog').on('hidden.bs.modal', function () {
                    alert(JSON.stringify(data));
                  })

        },
        error: function(err) {
            $('#refund_dialog').modal('hide')

            $('#refund_dialog').on('hidden.bs.modal', function () {
                    alert(err.responseText);
                  })
    });

是安全的,沒有API密鑰,這些ID不會有用。

這很安全,但是為什么您需要這樣做呢?

它是不是安全。

如果黑客決定創建一個程序,通過輸入隨機帳戶ID,收費ID和退款ID來發出數百萬個退款請求,該怎么辦?

結果可能是要求退款數千...

相反,您應該將所有這些數據(帳戶ID,費用ID和退款ID)存儲到正在處理事務(或轉發事務)的服務器上的數據庫中的表中。

應使用通過一些UUID生成器(例如OpenSSL)生成的密鑰來存儲這三段數據,以確保不會生成沖突的ID。

UUIUD應該是數據庫中數據的鍵。

退款按鈕應該只通過AJAX發送相同的UUID,這時服務器將使用UUID查找必要的數據,然后通過Stripe發送相關數據。


其不安全的另一個原因

通過將帳戶ID返回給用戶,如果他們的網絡瀏覽器受到惡意擴展/附加組件/插件/等的破壞,那么現在黑客可以掌握用戶的帳戶ID,從而為他們提供了至關重要的他們可以用來偽造其他請求的信息等。

永遠不要假設發送給客戶端的數據將被可靠地接收或返回。

僅當要將數據顯示給客戶端時,才應將數據發送給客戶端(例如上面有其帳戶ID的頁面)。

同時,絕不要將發送給客戶端的數據用作任何服務器端操作的輸入,因為這樣可以偽造請求,從而可能使黑客訪問您的后端系統。

另一種方式是不安全

如果黑客熟悉您的后端系統(Stripe或其他工具),那么他們可以通過將網絡請求轉發到遠程服務器或從遠程服務器轉發網絡請求來確定您的服務器上是否可以進行中間人攻擊,從而確定您的API密鑰。位置。 這可能允許您站點的另一部分完全不與任何Stripe交互連接,成為網關,使他們可以發送特制請求(具有隨機帳戶ID,費用ID,金額),然后在加密后查看數據使用您的API密鑰,並能夠對該數據進行解碼,以獲取您的秘密API密鑰。

相反,通過使用UUID,黑客無法將難題的兩個部分連接在一起,從而使其免受MITM攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM