2011-09-01 92 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