PHP页面保护

时间:2011-09-01 04:06:58

标签: php protection

我在我的网站上销售数码产品,我想设置某种页面保护。我的客户通过PayPal付款。我在PayPal结账的“提交”页面上有一个链接,并设置了我的结帐以重定向到“信息”页面。信息页面是我想要保护的。

这是我到目前为止的代码,但由于某些原因它不起作用,我不断收到“其他”声明......

<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>

有人看到我做错了吗?或者有更好的选择?

谢谢!

5 个答案:

答案 0 :(得分:3)

$_SERVER['HTTP_REFERER']很容易被任何人伪造。你的安全有多重要?如果在没有付费的情况下没有人访问该页面至关重要,那么不要依赖于HTTP_REFERER。

我很长时间没有使用过PayPal,但是当我这么做时,他们有一个用于验证付款的回调网址。数据流应如下所示

 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

该页面成为回调/通知页面。您不要在要保护的页面上放置任何代码。相反,当您在该页面上验证付款后,您将信息存储在数据库中,然后检查您正在保护的页面上是否验证了付款。

答案 1 :(得分:3)

使用PayPal的IPN来处理回调。毫无疑问,这将确认用户购买。 https://www.paypal.com/ipn

答案 2 :(得分:0)

正如一些人所评论的那样,依赖HTTP_REFERER远非安全

然而,要获得你想要做的工作 我会将你的代码改为这样的

这将检测引荐来源是否包含“https://www.paypal.com/”而不是==

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

答案 3 :(得分:0)

使用PayPal时,有多种方法可以处理购买商品。我建议使用回调选项。您指定将处理paypal回调数据的特定URL。在该URL中,您按照PayPal开发文档中的描述进行数据验证。在这种情况下,当客户被重定向回您的页面时,您所做的是在数据库中查找以查看购买的状态。如果尚未收到回调数据,则等待并重新检查。一旦您收到来自PayPal的回叫并且您明确知道付款是否发生,那么基于此,您应该授予您的客户访问权限,或者不是。

使用Referrer是很糟糕的,因为很多客户都被禁用了这个东西。此外,这可以很容易地改变,你的“受保护”区域将更容易访问。

此致 学家

答案 4 :(得分:0)

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