2013-02-19 58 views
1

我想一個paypal付款後,提供一些信息給客戶,使用貝寶返回URL,而無需客戶登入]。如何在沒有登錄的情況下實現祕密網址以在付款後提供信息?

所以我想我需要一個系統來爲每個事務創建URL,並避免另一個事務的url被猜測。

予想到的是這樣的:

http://www.domain.com/product/send.php?productID=12 & transactionHash = [thisTransactionHash]

使用transactionHash可以根據客戶的電子郵件和產品唯一ID進行計算。

此方法是否有意義?或者,您的建議是什麼將會提供信息而無需登錄,並避免客戶猜測其他產品的網址?


雖然他們對哈希一些有趣的答案,仍然存在與這個想法我上面提到的一個問題:貝寶需要接收返回的URL,因此該信息在付款前通過,因此該方法不固定反對欺詐。

我看到的唯一安全的方式是貝寶交付系統,這就是我接受答案的原因。

+0

這是通過默默無聞的安全。 – Yousf 2013-02-19 15:05:36

+0

@Yousf好吧,這是否意味着你推薦一個登錄/密碼系統? – tucson 2013-02-19 15:09:00

+0

如果使用的事務散列是基於已知數據計算的,那麼通過obscurity_它只是_security。如果它隨機生成應該是一個安全的方法。 – oktopus 2013-02-19 15:14:31

回答

1

如果您僅以PayPal爲目標,爲什麼不檢查即時付款通知指南? https://www.x.com/sites/default/files/ipnguide.pdf

我以前沒有使用Paypal,但似乎這解決了您的問題。

創建表格: | product_id(您產品的唯一ID)| varchar transaction_hash |

在此示例代碼(PHP實施例):在該表 https://www.x.com/developers/PayPal/documentation-tools/code-sample/216623

驗證所述付款是正確的之後,插入產品ID和verify_sign(來自PayPal POST數據值)。併爲用戶提供帶有產品ID和verify_sign的URL。

1

「使用可基於客戶的電子郵件和產品唯一ID計算的transactionHash」。

只要算法知道你的系統就會崩潰。我的建議是一個「安全」又名加密PRNG +一些查找表。

0

包括一個散列參數,其值基於幾個參數進行計算。例如,對於您的網址Ø會計算這樣的散列:

$uniqueKeyString="some random characters"; 
transactionHash=md5("domain.com".$productId.time().$uniqueKeyString); 

其中$uniqueKeyString是一個祕密值(一些隨機的整數),只有自己知道。當請求會發送到你的服務器時,你可以簡單地自己計算哈希串並且將它與請求的transactionHash進行比較,不管它是否相同。

+0

是的,爲了提高安全性,您可以使用比md5更好的散列函數,並且使用更長的唯一密鑰字符串。 – ulkas 2013-02-19 15:04:30

1

您可以在任何給定的時間爲用戶創建一個隨機ID,甚至可以在網絡上使用一些真正的隨機生成器。

但是你應該做的是在特定的時間內使它變得唯一,或許用一個簡單的數據庫結構,也許將信息存儲到服務器上的文件中,一旦它們被刪除,它們就會被相同的腳本刪除只讀一次,取決於你的需求。

因此,無論用戶何時生成這樣的唯一ID,他都可以訪問該信息一段時間,或者一次。

使用說隨機。組織的隨機字節功能,可以產生這樣的字符串: 6f0d47cf3432d4015e0e798641191bf0e8e0b90b00df23181bcb3401a0dad43d85be711343c3baa9 這幾乎是不可能的猜測,即使別人知道包含一個productId和說客

1

使用散列函數,而不需要記錄的訪問某些存儲的信息的emailadress不是一個壞主意。但是不應該根據已知的數據生成散列,例如ID,電子郵件地址或任何用戶可能知道或猜測的類似數據。

相反,有必要隨機生成足夠長的散列值,這些散列值不能被任何已知數據猜出或產生。 來自random.org的已經提到的字節函數可能是一個不錯的選擇。

相關問題