PHP页面保护

4xrmg8kj  于 2023-04-19  发布在  PHP
关注(0)|答案(5)|浏览(105)

我在我的网站上销售数字产品,我想设置某种页面保护。我的客户通过PayPal付款。我在“提交”页面上有一个链接到PayPal结账,并将我的结账设置为重定向到“信息”页面。信息页面是我想要保护的。
这是我目前为止的代码,但由于某种原因它不起作用,我一直得到“else”语句...

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

有没有人知道我做错了什么?或者有更好的选择?

brvekthn

brvekthn1#

$_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
该页面将成为回调/通知页面。您不会将任何代码放在要保护的页面上。相反,当在该页面上验证付款时,您将信息存储在数据库中,然后检查您正在保护的页面上的付款是否已验证。

rqenqsqc

rqenqsqc2#

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

ct3nt3jp

ct3nt3jp3#

正如一些人评论的那样,依赖HTTP_REFEER远远不够安全
然而,为了让你正在尝试做的工作,我会改变你的代码,像这样
这将检测到referrer是否包含“https://www.paypal.com/”而不是== to

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

cl25kdpy4#

当与PayPal合作时,有许多方法来处理购买商品.我建议使用回调选项.您指定将处理贝宝回调数据的特定URL.在该URL中,您按照PayPal开发文档中所述进行数据验证.在这种情况下,当客户被重定向回您的页面时,你所做的是你在db中查找查看购买的状态。如果还没有收到回调数据,你等待,并重新检查。一旦你收到了来自PayPal的回调,你明确知道是否发生了付款,然后根据这一点,你应该给予你的客户访问或没有。
使用Referrer是不好的,因为许多客户已经看到这个东西禁用。而且,这可以很容易地改变和您的“保护”区域将更容易访问。
问候J

z6psavjg

z6psavjg5#

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

相关问题