サーバー側で複数の送信を処理する方法 質問する

サーバー側で複数の送信を処理する方法 質問する

私たちは皆、古き良き「送信ボタンを無効にする」というトリックを知っていますが、サーバー側で複数の送信を処理するための最良の方法は何でしょうか?私は、絶対に致命的フォームは一度だけ送信され、クレジットカードが処理されます。現時点ではどのようになっているかは書きませんでしたが、簡単な修正として、送信時に無効化する手法を取り入れました。ただし、JavaScript を無効にしている一部のせっかちなユーザーは、依然として二重に請求されます。

では、これを回避する方法は何でしょうか? いくつか思いつくことがあります (過去にいくつか使用したことがあります)。しかし、この問題に対処するための「ベスト プラクティス」があるかどうか知りたいです。私は PHP を使用していますが、概念にもっと興味があります。

編集:私はトークン技術を知っており、過去にそれを使用したことがあります。この質問は、私のアプローチが他の優秀なプログラマーの皆さんが使用しているものと一致しているかどうかを確認するためのものです。

ベストアンサー1

本当に効果的な方法の 1 つは、リクエストと一緒にトークンを送信し、使用されたトークンのリストを保持することです。トークンが有効でない場合、またはトークンがすでに処理されている場合は、中止します。

トークンは、増加していく整数のように単純にしたり、隠しテキスト フィールドに保存したり、セキュリティを強化するために暗号化したりすることができます。ページの作成時にトークンを生成し、それを暗号化してから、トークンが生成され、処理されていないことを確認することで、この機能をより堅牢にすることができます。

おすすめ記事