在贝宝回PHP代码中考虑安全性

在贝宝回PHP代码中考虑安全性,php,paypal,Php,Paypal,我接受以下html付款 <form name="myform" action = "https://www.sandbox.paypal.com/cgi-bin/webscr" method = "post"> <input type="hidden" name="cmd" value="_xclick"> <input type = "hidden" name = "business" value = "test@ssssss.com"> <input

我接受以下html付款

<form name="myform" action = "https://www.sandbox.paypal.com/cgi-bin/webscr" method = "post">
<input type="hidden" name="cmd" value="_xclick">
<input type = "hidden" name = "business" value = "test@ssssss.com">
<input type = "hidden" name = "item_name" value = "Update Plan">
<input type = "hidden" name = "loggedin_user_id" value="<?php echo $user->id;?>">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="amount" value="4.95">
<input type="hidden" name="tax" value="0">
<input name = "rm" value = "2" type = "hidden">
<input type="hidden" name="quantity" value="1">
<input type="hidden" name="custom" id="custom" value="{{ user_id }}">
<input type="hidden" name="currency_code" value="USD">
<input type = "hidden" name = "cancel_return" value = "http://website.com/">
<input type = "hidden" name = "return" value = "<?php echo $this->config->base_url();?>pay">
<input name = "cbt" value = "Return to My Site" type = "hidden">
<button type="submit" class="btn btn-large btn-success">Upgrdate Now</button>
</form>

不要假设用户仅仅因为访问了您的返回URL就完成了购买。用户可以从表单中读取返回URL并手动访问它。此外,在某些情况下,PayPal可能会持有一笔用于验证的付款;用户将被发送到返回URL,但付款尚未完成


要确定是否进行了购买,请在您的网站上实现PayPal端点。

此问题似乎与主题无关,因为它是一个代码审查请求。这可能更适合于这种情况。在发布之前,请务必阅读他们的建议,以确保您的问题符合他们的指导原则。我只是想问,在您的回拨代码中接受paypal付款时,应考虑哪些安全措施。这对于本网站来说仍然太广泛。我建议你读一个好的问题和答案。还有,一定要拿着书读。我明白,这就是我所说的。从paypal站点“paypal向URL发送包含支付信息(IPN消息)的安全表单帖子。IPN侦听器使用商户后端进程检测和处理IPN消息。”。在我的例子中,IPN Listener是我相信的回发URL,我想知道php页面的安全措施。@formul1的文档中解释了安全措施。简而言之:你的IPN侦听器将通知发布回贝宝,以确认它是正确的。你会考虑我的回复文件是否为零安全,我只检查是否(ISTSET($Typ[L'GudEdIn UsSeriID)])?是的,这完全不安全。首先,这是行不通的。通过GET请求而不是POST访问返回URL。即使你解决了这个问题,用户也可以简单地查看表单并访问返回URL而不必付费。这就是为什么我要检查返回URL上是否设置了$u POST。如果未设置$\u POST,页面将不会执行。甚至我在IPN PayPal设置中也使用相同的返回url。所以我相信IPN正在调用返回url,然后正在检查isset($\u POST)。我仍然想知道为什么它被认为是不安全的
if(isset($_POST['loggedin_user_id']))
        {
            $this->user_model->set_user_attribute($_POST['loggedin_user_id'],'user_role',1);

        }