PHP从PayPal IPN过滤POST?

时间:2010-08-01 08:27:06

标签: php filter paypal escaping paypal-ipn

我有一个PayPal IPN PHP文件设置,它将所有IPN帖子内容变量分配给变量。这个文件只能从paypal.com“点击”(即没有人应该知道它的网址)。

我的问题是我应该采取必要的步骤来过滤和清理PayPal的POST数据,还是屏蔽我的IPN文件名(IPN_082j3f08jasdf.php)?

另外,有人可以确认我的消毒代码吗?这很基础。我在通过POST或GET发送的一切上运行它,我的目标是防止任何类型的MySQL注入或黑客做的任何事情。

function filter($data){
 // changes & to &
 // changes " to "
 // removes \ < >

 $data = trim(htmlentities(strip_tags($data)));

 if(get_magic_quotes_gpc()){
  $data = stripslashes($data);
 }
 $data = mysql_real_escape_string($data);

 return $data;
}

3 个答案:

答案 0 :(得分:3)

模糊文件名是从不 - 你需要过滤POST数据,是的。假设在您证明它之前,PayPal不会调用脚本。

卫生看起来还不错 - 如果您的代码变得很长,我会倾向于分两步消毒它 - 开始时的strip_tags和基本卫生设施,以及在您联系数据库的同时逃离的mysql - - 它使维护IMO变得更容易。

答案 1 :(得分:1)

你也可以考虑使用Kohana php框架使用的更强大的过滤机制,可以在这里找到:

http://svn.bitflux.ch/repos/public/popoon/trunk/classes/externalinput.php

答案 2 :(得分:-1)

对不起的建议表示歉意!请忽略这篇文章! - 保持未删除,因为它在下面产生了一些有趣的讨论

如果没有人知道它的URL,那么SQL-sanitize可能不是一个大问题。除非有人劫持您的目录列表,否则屏蔽您的IPN文件应该足够了。

htmlentities()需要有一个ENT_QUOTES标志来转换引号。

如果启用了get_magic_quotes_gpc(),那么strip_slashes会自动完成...在您的情况下,看起来您将加倍条带斜线。

mysql_real_escape_string strip_slashes()已完成{{1}}的工作......