1

すべてのIPN投稿コンテンツ変数を変数に割り当てるPayPalIPNPHPファイルを設定しています。このファイルは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 をエスケープするという 2 つのステップでサニタイズする傾向があります。 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 フラグが必要です。

get_magic_quotes_gpc()がオンの場合strip_slashes、自動的に行われます...あなたの場合、スラッシュを二重にするように見えます。

またmysql_real_escape_stringstrip_slashes()すでに...

于 2010-08-01T08:41:49.017 に答える