保护接收贝宝IPN通知PHP脚本(Protect php script that receive p

2019-09-18 15:54发布

在我的网站,我已经集成接收的IPN通知,并发送许可证密钥给客户一个PHP脚本。 这个脚本是由PHP脚本所需的其他2 PHP文件的文件夹中...我怎么能保护这个文件夹? 如果我把它的.htaccess有:

order allow,deny
deny from all

我阻止了贝宝的通知了。

我该如何保护呢? 我是否需要?

Answer 1:

您可以放心地限制访问您的IPN脚本只有IP地址名单如下:

216.113.188.202
216.113.188.203
216.113.188.204
66.211.170.66

这可以通过以下方式进行:

if (!in_array($_SERVER['REMOTE_ADDR'],array('216.113.188.202','216.113.188.203','216.113.188.204','66.211.170.66')) {
header("HTTP/1.0 404 Not Found");
exit();
}

这样,只有支付宝将能够访问的IPN脚本。

IP地址的这份名单已经相当稳定了多年。 在情况下,如果贝宝添加了一个新的地址,你可以添加报告的电子邮件和人工审查此类案件。



Answer 2:

有很多事情可以做:

  1. 给你的脚本一个不起眼的名称,以便它不容易被猜到。
  2. 在文件夹中禁用目录列表
  3. 检查调用网站是paypal.com(或相关的IP地址等)


Answer 3:

为什么你试图做到这一点?

在IPN系统,首先只是反弹正在使用卷曲或fshock或什么都传递到您的IPN脚本回PayPal的变量...寻找到的响应,你可以告诉我们,如果它是一个有效的交易或不...有人不能假并不在贝宝本身存在交易变量......所有他们能做的就是重新重用旧的交易信息来欺骗你的脚本..因为它存在于你的贝宝脚本将被假定它是一个全成金..​​.

所以你可以通过对你的数据库进行比较,txn_id防止这一点,如果在你的数据库已经存在,这意味着有人试图使用已记录的交易信息,以欺骗你...

因为你做谁在乎这些称之为IPN脚本的那些那些检查?它不会为他们工作,因为你检查变量对PayPal和你的数据库...

在任何异常打印出一个漂亮的句子,告诉他们“这个剧本是强大的!不要试图愚弄我们!”



Answer 4:

如果你知道从哪个PayPal将使用该脚本尝试IP:

order deny, allow
deny from all
allow from [Paypal-IP]


Answer 5:

我不建议关闭了所有的IP地址,因为你不能确保支付宝将继续从同一个IP来所有的时间要求。 如果他们决定要改变自己的IP范围内,您的设置将打破,可能不通知你。

我认为处理贝宝请求脚本来处理这个的地方 - 在脚本中,您需要确保该请求实际上是从贝宝的到来。 您可以通过使用不容易猜到因为已经提出了一些晦涩的URL做到这一点。

如果可能的话,考虑的共享密钥设置为IPN - 这种方式,您有检查的要求实际上是从贝宝未来的一个更好的办法,虽然这是一个有点难以成立。

希望这可以帮助!



Answer 6:

退房去现场检查表:

https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/howto_api_golivechecklist

(开发者主页>如何> API>去住清单)

对于IP地址的列表,以允许



Answer 7:

现在我已经做到这一点:

其中存储在PHP脚本和我已经创建其中I移动的2个配置文件,并且其中我已经放在用下面的代码。htaccess的另一文件夹中的2的配置文件的文件夹中:

order allow,deny
deny from all

现在2的配置文件有很好的保护! ...但不接收通知的脚本! 如果我试图阻止目录列表(为包含PHP脚本和config文件夹中的文件夹)有:

IndexIgnore *

贝宝沙箱给我一个错误500!

所以,我可以做些什么来保护脚本中的唯一的事情就是到另一个地方,在它的头上,那检验通知的条件来自paypal.com?

最后,我已经在PHP脚本的头部添加了如果基于远程主机名的语句:

 $remote_host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

如果有人有兴趣,它也可以查询$_SERVER['REMOTE_HOST']但必须在服务器上配置的httpd.conf文件。



文章来源: Protect php script that receive paypal IPN notifications