PHP фильтр POST от PayPal IPN? - PullRequest
       12

PHP фильтр POST от PayPal IPN?

1 голос
/ 01 августа 2010

У меня есть настроенный PHP-файл PayPal IPN, который присваивает переменным все содержимое содержимого IPN.Этот файл только «получен» от paypal.com (то есть никто не должен знать, что это URL).

Мой вопрос заключается в том, должен ли я предпринять необходимые шаги для фильтрации и очистки данных POST из PayPal или маскирования моего файла 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 ]

3 голосов
/ 01 августа 2010

обфускации имени файла никогда недостаточно - вам нужно отфильтровать данные POST, да.Предположим, что это не PayPal, вызывающий скрипт, пока вы не сможете это доказать.

санитария выглядит нормально - хотя, если ваш код становится довольно длинным, я бы попытался санировать его в два этапа - strip_tags и базовая санитарияв начале, и mysql, выходящий при одновременном обращении к базе данных, упрощает поддержку IMO.

1 голос
/ 01 августа 2010

Вы можете также рассмотреть возможность использования более надежного механизма фильтрации, используемого также Kohana php framework, который можно найти здесь:

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

0 голосов
/ 01 августа 2010

Извините за плохой совет!Пожалуйста, не обращайте внимания на этот пост! - оставив его без восстановления, поскольку он привел к интересному обсуждению ниже

Если никто не должен знать его URL, SQL-sanitize, вероятно, не такая уж большая проблема.Маскирования вашего IPN-файла должно быть достаточно, если только кто-то не похитит ваш список каталогов.

htmlentities() должен иметь флаг ENT_QUOTES для преобразования кавычек.

, если get_magic_quotes_gpc() включено, то strip_slashes автоматически выполняются ... в вашем случае, похоже, вы удвоите косую черту.

также mysql_real_escape_string выполнит работу strip_slashes() уже ...

...