skillup

技術ブログ

プログラミング全般

トランザクショントークンについて

投稿日:2016年6月8日 更新日:

フォーム画面で入力を行うときにはPOSTでデータを受け取ってエラーチェックしたり、データベースに入力をしたりします。

ただその時に何も考えずに安易に送信→受信の際に以下のようなトラブルがあり得ます。

  • 二重投稿(ボタンを二回押してしまう)
  • 完了画面でリロードしてしまう
  • 入力→完了画面に遷移した後で、ブラウザの「戻る」ボタンで入力画面に戻ったのちに送りなおす。

このような処理を防ぐ目的で「トランザクショントークン」という手法が使われます。

以下がトランザクショントークンの大まかな流れです。

  1. まず画面読み込み時に不規則な文字列を生成する(これをトークンといいます。)
  2. トークンをセッションに登録、同時にHTMLにもhiddenで持たせる
  3. ユーザーが投稿したときにはPOSTでトークンが送られる
  4. リクエストがPOSTの時は送られたトークンがセッションの中に入っているトークンと合致するかをチェックする。(合致した場合は正常な遷移)
  5. セッションのなかのトークンを削除し、1に戻る

この方法であれば正常な遷移の場合は、セッションのトークンとPOSTのトークンが合致しますが、不正な画面遷移では合致しないか、セッションのトークンがない、という状態になります。

上記のような実装を行うことで安全なフォームの遷移を実装することができます。

参考リンク

ECCUBEのソース

さいきょうの二重サブミット対策

FORMのリロード対策1

-プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

読みやすいコードについて

コードリーディングにおいて聖典となっているリーダブルコードについて読んでいこうかと。 ただ読んでいくだけではつまらないので、自分なりの考え方も書いていきます。 Contents1 優れたコードの定義1 …

no image

ExcelVBAに関して(主にプロシージャ)

いつも半年ごとぐらいに触っていてあまり知識が蓄積しないので(汗)これを機につまづいたところをちょっとメモ。 Contents1 基本2 メモ3 参考リンク 基本 基本的な変数の代入や条件分岐、ループな …

no image

アクセストークンの分類について

認可情報を取得する際に、ID &パスワードではなく、アクセストークンで認証を行うサービスは多いと思うのですが、アクセストークンにも色々ありますので、再度まとめておこうと思います。 以前まとめた …

no image

Eclipseのシンタックスハイライト

先日PCがクラッシュした時にEclipseを入れなおしたんですが、普段あまり意識せずに使っていたのでhtmlのシンタックスハイライトをだすためだけに2時間ぐらい費やしました・・・自戒の意味も込めてメモ …

no image

正規表現に関して

SQLネタをいろいろと書いておりますが、ちょっとワンポイント的なネタで正規表現について書きたいと思います。 平均的なものは知っているつもりでしたが、シェルの正規表現について知らなかったのでちょっとメモ …

アーカイブ