1

我设置了一个 PayPal IPN PHP 文件,它将所有 IPN 发布内容变量分配给变量。该文件仅来自 paypal.com(即没有人应该知道它的 url)。

我的问题是我是否应该采取必要的步骤来过滤和清理来自 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;
}
4

3 回答 3

3

混淆文件名是远远不够的——你需要过滤 POST 数据,是的。假设不是 PayPal 调用脚本,直到您可以证明它。

卫生看起来不错——如果你的代码变得很长,我倾向于分两步清理它——一开始的strip_tags和基本卫生,以及在你联系数据库的同时逃逸的mysql——它使更容易维护 IMO。

于 2010-08-01T08:41:18.363 回答
1

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

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

于 2010-08-01T08:41:17.973 回答
-1

对不起,糟糕的建议!请无视此帖!- 保持不删除,因为它在下面产生了一些有趣的讨论

如果没有人知道它的 URL,SQL 清理可能不是什么大问题。除非有人劫持了您的目录列表,否则屏蔽您的 IPN 文件就足够了。

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

if get_magic_quotes_gpc() is on, then strip_slashes are automatically done... in your case, it looks like you will double strip slashes.

also mysql_real_escape_string will do the work of strip_slashes() already ...

于 2010-08-01T08:41:49.017 回答