注目の書籍

好評発売中!

IT業界徹底研究就職ガイド2013年版

IT/ネット業界で働くと いうことを分かりやす く解説。2013年3月卒 業の学生向けの1冊。

必聴講座ご紹介

Cloud Days Tokyo 2012
クラウド時代を勝ち抜く企業戦略を考える

エムオーテックス


Cloud Days Tokyo 2012
クラウド時代の企業インフラとユーザー環境の姿

ヴイエムウェア


Cloud Days Osaka 2012
クラウドでIT維新を〜ビジネスを加速させるベストプラクティス

アマゾン データ サービス ジャパン

オープンソース/Linux

PHP TIPS

ITpro

58. すごいリロード対策

2007/10/18

まず、日本のサイトにある一般的な登録フォームの画面遷移は

入力画面→入力確認画面→完了画面

となっている場合が多いようです。ここでリロード問題となるのは完了画面でのDBへのINSERT処理やCSV書き出し処理、メール送信処理など「一度しか行わない処理」です。例えば完了画面へ遷移した際にブラウザのリロードボタンが押された場合、確認画面よりsubmitした情報が再度submitされて上記の一度しか行わない処理が二度行われてしまいます。そうならないよう、リロード対策はスクリプトで制御します。

まずは確認画面のスクリプト

確認画面でチケットを発行し、セッションに保存しておきます。同時に完了画面へチケットがPOSTされるよう、hiddenにセット。こうして完了画面へ遷移させます。それでは完了画面のスクリプトを見てみましょう。

このように、確認画面で発行されたチケットは一度使い切ってしまえば2度処理される事なくリロード対策となるわけです。

さて、ここからが本題です。スクリプトを見ていてセキュリティの知識が豊富な方はお気づきかと思いますが、完了画面には重要な処理が多くCSRF(クロスサイト・リクエスト・フォージェリー)の問題を抱えているのです。上記例のようなワンタイムチケット方式は同時にCSRFの対策が施されますので、リロード対策とCSRF対策併せて一石二鳥!

いかがでしょうか。今までの完了画面を見直す必要性はございませんか?



(アシアル 海原才人)


この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介