Paypal 決済システムを利用する Web サイトを構築していますが、セキュリティ上の課題が 1 つあります。
Paypal IPN から次のフォームがあります。
<form class="form-horizontal" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="ABCDEFEGDEDS">
<input type="hidden" name="on0" value="Balance">
<label>Amount</label>
<select class="form-control" name="os0" id="deposit_paypal">
<option value="1000">$1000.00 USD</option>
<option value="2000">$2000.00 USD</option>
</select>
<input type="hidden" name="custom" value="<?php echo $user->id; ?>">
<input type="image" src="https://www.paypalobjects.com/ru_RU/i/btn/btn_buynow_SM.gif" border="0" name="submit" alt="PayPal">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
どのユーザーが取引を行ったかを知りたいと思っていました。インターネットを検索すると、上記のようにカスタム フィールドを作成できることがわかりました。ユーザーを追跡する理由は、購入が完了した後に仮想アカウントに残高を追加する必要があるためです。
しかし、問題は: 悪意のあるコード (javascript マルウェア) がカスタム フォーム フィールドのユーザー ID を 4 に変更した場合はどうなるでしょうか? 残高は、前のユーザーではなく 4 の ID を持つユーザーに追加されます。
Ok。後で比較するためにペイパルに送信する前に、フォームデータをデータベースに挿入することをお勧めします。2 つ目の問題が発生します。ユーザーが送信ボタンを押した後、注文を完了せずにペイパル ページを終了した場合はどうなりますか? Paypal は私のものではなく、別のページで開くため、これは追跡できません。
これらの問題に対する他の解決策はありますか?Paypal IPN を通じて購入したユーザーを安全に追跡できるベスト プラクティスが必要です。