2011-09-01 94 views
1

我在我的網站上銷售數字產品,並且我想設置某種頁面保護。我的客戶通過PayPal付款。我有一個「提交」頁面上的鏈接到PayPal結帳,並已設置我的結帳重定向到「信息」頁面。信息頁面是我想要保護的內容。PHP頁面保護

這裏是我到目前爲止的代碼,但由於某種原因它不工作,我不斷收到「其他」的聲明......

<div id="info"> 
<ul> 
<li> 
<?php 
if ($_SERVER['HTTP_REFERER'] == "https://www.paypal.com/"){ 

echo 'information...'; 

}else{ 
echo 'You need to pay first...'; 
} 
?> 
</li> 
</ul> 
</div> 

任何人看到我在做什麼錯?或者有更好的選擇?

謝謝!

+3

「任何人都看到我在做什麼錯了?」您依賴用戶控制的$ _SERVER ['HTTP_REFERER']。發送虛假推薦人是微不足道的。 – ceejayoz

+1

因爲引用者本身不是'https:// www.paypal.com /',而是包含在'www.paypal.com'主機中的頁面。嘗試解析URL並檢查主機。 – Ben

+0

你想保護什麼?您是否希望僅向已付費的人展示內容? –

回答

3

$_SERVER['HTTP_REFERER']可以很容易地被任何人僞造。你的安全有多重要?如果沒有人付費訪問頁面是至關重要的,那麼不要依靠HTTP_REFERER。

我很長時間沒有使用PayPal,但是當我做了它們時,它們有一個用於驗證付款的回調URL。數據流應該是這樣的

Your Server            Paypal 

                User submits payment form 
     <-----------Paypal sends transaction information to your callback url 

    You send the information back-----------------------------------> 

     <---------Paypal sends back confirmation that they sent you that data 
                (The data wasn't faked) 

現在您檢查交易信息說什麼。如果用戶進行了付款,則將該記錄存儲在某種數據庫中,以便您可以在將來隨時驗證付款。

更新

下面是Paypal進行PHP代碼示例,讓您開始:https://cms.paypal.com/cms_content/US/en_US/files/developer/IPN_PHP_41.txt

該頁面變成一個回調/通知頁面。您不要將任何代碼放在您要保護的頁面上。相反,當您在該頁面上驗證付款後,您會將信息存儲在數據庫中,然後檢查您所保護的頁面上是否已驗證付款。

0

如一些人評論說,依靠HTTP_REFERER是遠離安全

但是得到你正在嘗試做的工作 我會更改您的代碼是這樣的

這將檢測是否引薦包含 「https://www.paypal.com/」 而不是==來

if (strpos($_SERVER['HTTP_REFERER'], "https://www.paypal.com/") !== FALSE)) { 
3

使用PayPal的IPN來處理回調。毫無疑問,這將確認用戶購買。 https://www.paypal.com/ipn

+0

謝謝你指點我,我一定會考慮它! – tcd

0

使用PayPal時,有多種方式來處理商品的購買。我會建議與回調的選項。您指定將處理貝寶回調數據的特定網址。在該網址中,您按照PayPal開發文檔中所述進行數據驗證。在這種情況下,當客戶重定向回您的頁面時,您所做的是在db中查找以查看購買狀態。如果尚未收到回叫數據,請等待並重新檢查。一旦您收到貝寶的回撥,並且您明確知道付款是否發生,那麼基於此,您應該允許訪問您的客戶或否。

使用Referrer是不好的,因爲許多客戶都看到這個東西被禁用。此外,這可以很容易地更改,您的「受保護」區域將更容易訪問。

問候, J.

0
<? 
$ref=$_SERVER['HTTP_REFERER']; 
if (strpos($ref,'https://paypal.com') !== false) { 
    echo 'ok'; 
}else{ 
    echo 'error'; 
} 
?> 
+1

您的方法可能會回答這個問題,但您應該解釋爲什麼以及如何解決提問者面臨的問題。 – jxh