9

.net でクレジット カード取引を処理しようとしていますが、Safari、Opera、および IE で完全に動作します。Firefox で同じトランザクションを試みると、2 つのリクエストが送信され、カードが二重に請求されます。Google で簡単に検索すると、これは Firebug の問題のようですが、この二重投稿を止める方法が見つかりません。

Firefox(およびFirebug)がこれを行うのを防ぐ方法について誰か考えがありますか?

4

7 に答える 7

8

一度だけ使用される一意のキーであるnonceを使用します。

フォーム フィールドと一緒に一意の番号をブラウザに送信し (これは多くの場合、非表示の入力フィールドで行われます)、トランザクションと共にサーバーにコピーを保存します。フォーム内で、送信時に番号を変更します。リクエストを処理するときにキーが一致することを検証します。

また、フロントエンドで何が起こっているかについての明確な説明がある場合もあり、その問題はクライアント側で解消される可能性があります。サーバー上で二重送信の問題を解決するのが最善です。これは、二重送信が発生する可能性がある方法が非常に多いためです。

于 2008-11-12T04:17:14.883 に答える
4

火炎虫ではないかもしれません。

昨年も同様の問題がありました (ただし、私の場合は、スタンドアロンのメディア ファイル (GIF、JPG、WMV など) を表示するたびに、一連の無限の GET 要求が発生しました)。

すべての拡張機能を無効にしてから、一度に 1 つずつ再度有効にして、各拡張機能が問題の原因であるかどうかを確認しました。私の場合、それは Skype 拡張機能であることが判明しました。

したがって、それが火の粉であるという中古の知識だけに頼らないでください。実際に問題に焦点を合わせると、それがまったく別のものであることに気付くかもしれません。

于 2008-11-12T04:58:27.607 に答える
2

私は Firebug 1.2.1 を使用していますが、二重投稿のバグは既に防止されています。AJAX 応答を表示するときに、次の警告が表示されます。

Firebug は、次の URL の情報を取得するためにサーバーに POST する必要があります: http://example.url/

この 2 番目の POST は、一部のサイトに干渉する可能性があります。POST を再度送信する場合は、Firefox で新しいタブを開き、URL「about:config」を使用し、ブール値「extensions.firebug.allowDoublePost」を true に設定します。この値は、Firefox を再起動するたびにリセットされます。 https://bugzilla.mozilla.org/show_bug.cgi?id=430155 が出荷されました。

于 2008-11-12T04:24:20.327 に答える
1

ナンスがこの問題の解決策ではない場合でも、とにかくナンスが必要です!ある人が別の人をだまして何かをさせたいと思うようなあらゆる種類のサイトにとって、これは非常に重要です(お金が関係する場所など)。クロスサイトリクエストフォージェリと呼ばれ、通常はナンスによってブロックされます。詳細が必要な場合は、http://en.wikipedia.org/wiki/CSRFを参照してください。

于 2010-11-22T07:22:21.077 に答える
1

私も Firefox でこのようなことが一度ありました。「ソースを表示」すると、状況によっては発生する可能性があります。Firebug の二重投稿も同様の問題のようです。

クレジット カードの二重請求が、注文後に [戻る] ボタンを押すのと同じくらい簡単にできるとしたら、それは悪いことです。(そして、e コマース会社の開発者として、これは常に発生していると言えます。チェックアウト プロセスに 4 つのステップ/ページがある場合、ステップ 3 を新しいブラウザー ウィンドウで開くことによって引き起こされる大混乱を想像してみてください。 , 最初のウィンドウで前のステップに戻り、2 番目のブラウザ ウィンドウで注文を完了する. 信じてください, 私は難しい方法を学びました. ハワイの配送料を回避するために人々が何をしているのかに驚かれることでしょう.ステップ 3 で計算します。)

nonce は 1 つのソリューションです。もう 1 つの方法は、クレジット カードを処理するページで単純にサニティ チェックを行うことです。データベースを見て、「ちょっと待ってください...この注文はすでに請求されています!」と言ってください。次に、優雅なエラーメッセージで嘔吐します。お役に立てれば!

于 2008-11-12T04:49:53.443 に答える
0

ここで素晴らしい反応をありがとう。私の場合、FireFox 2.0.0.20を搭載したFireBug(バージョン1.05)であることがわかりました。FireBugアドインをオフにすると、二重投稿が停止しました。

于 2008-12-28T04:47:41.000 に答える
0

私は同じ問題を抱えていましたが、それが FireBug に固有のものであることに気づきませんでした。ユーザーが戻るボタンをクリックして再送信した場合に備えて、とにかくこれを適切に修正する必要があります。

通常の方法は、フォームの非表示フィールドにトランザクションの一意のトークンを設定することです。サーバー側がフォームを受信すると、別のトランザクションが行われるのを防ぎます。

于 2008-11-12T04:19:18.997 に答える