6

私のWebサイトでは、IPN通知を受信し、ライセンスキーを顧客に送信するphpスクリプトを統合しました。このスクリプトは、phpスクリプトに必要な他の2つのphpファイルと一緒にフォルダーにあります...このフォルダーを保護するにはどうすればよいですか?私がそれに入れた場合.htaccess

order allow,deny
deny from all

PayPalの通知もブロックします。

どうすれば保護できますか?する必要がありますか?

4

7 に答える 7

3

あなたができることはたくさんあります:

  1. スクリプトにわかりにくい名前を付けて、簡単に推測できないようにします。
  2. フォルダ内のディレクトリリストを無効にする
  3. 発信サイトがpaypal.com(または関連するIPアドレスなど)であるかどうかを確認します
于 2009-07-14T07:27:13.667 に答える
3

なぜあなたはこれをやろうとしていますか?

IPN システムでは、最初に cURL や fshock などを使用して、ipn スクリプトに渡された変数をペイパルにバウンスするだけです...応答を調べて、それが有効なトランザクションかどうかを判断できます...誰かができないペイパル自体に存在しないトランザクション変数を偽造する...彼らができることは、古いトランザクション情報を再度再利用してスクリプトをだますことだけです..ペイパルに存在するため、スクリプトは支払いが成功したと想定します...

txn_id をデータベースと比較するだけでこれを防ぐことができます。データベースに既に存在する場合は、誰かがすでに記録されているトランザクション情報を使用してあなたをだまそうとしていることを意味します...

このipnスクリプトを呼び出すものを気にするチェックを行うため... paypalとデータベースに対して変数をチェックするため、それらのために機能しません...

例外があれば、「このスクリプトは堅牢です! 私たちをだまそうとしないでください!」と伝えるために、適切な文章を出力します。

于 2010-03-25T15:27:18.250 に答える
2

PayPalがスクリプトを使用するIPがわかっている場合は、次のことを試してください。

order deny, allow
deny from all
allow from [Paypal-IP]
于 2009-07-14T07:28:01.483 に答える
2

Paypalが常に同じIPからのリクエストを維持するかどうか確信が持てないため、すべてのIPをシャットアウトすることはお勧めしません。彼らがIP範囲を変更することを決定した場合、おそらく通知なしに、セットアップが中断されます。

Paypalリクエストを処理するスクリプトは、これを処理する場所だと思います。そのスクリプトでは、リクエストが実際にPaypalから送信されていることを確認する必要があります。これを行うには、提案されているように簡単に推測できないあいまいなURLを使用します。

可能であれば、IPNの共有シークレットの設定を調べてください。これにより、設定が少し難しくなりますが、リクエストが実際にPaypalから送信されていることを確認するためのより良い方法が得られます。

お役に立てれば!

于 2009-07-14T07:37:32.757 に答える
2

稼働開始チェックリストを確認してください。

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

(開発者ホーム > 方法 > API > Go Live チェックリスト)

許可する IP アドレスのリスト

于 2011-05-22T09:38:34.740 に答える
1

今私はこれをしました:

phpスクリプトと2つの構成ファイルが保存されているフォルダーに、2つの構成ファイルを移動し、次のコードで.htaccessを配置した別のフォルダーを作成しました。

order allow,deny
deny from all

これで、2 つの構成ファイルが適切に保護されました。...しかし、通知を受け取るスクリプトではありません! ディレクトリのリスト(phpスクリプトとconfigフォルダーを含むフォルダー)をブロックしようとすると:

IndexIgnore *

Paypal サンドボックスでエラー 500 が表示されます。

スクリプトを保護するために私ができる唯一のことは、スクリプトの先頭に、通知が paypal.com からのものであることを確認する条件を配置することです。

最後に、リモート ホスト名に基づく if ステートメントを php スクリプトの先頭に追加しました。

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

誰かが興味を持っている場合は、クエリを実行することもできます$_SERVER['REMOTE_HOST']が、サーバー上の httpd.conf ファイルを構成する必要があります。

于 2009-07-14T08:17:19.853 に答える