開発Blog

「戻る」ボタン問題の解法

投稿日:

 


※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。
最新のintra-martでは、異なる情報であることがありますので、ご注意ください。


 

業務システムの中で、ブラウザの「戻る」ボタンは、以前よりやっかいな問題を引き起こす種となっています。
特にWebアプリケーションのセキュリティを低下させる1つの原因ととらえられています。
このTipsでは、intra-martの「戻る」ボタン対策について紹介していきます。

「戻る」ボタンの問題は、結局は、ブラウザのキャッシュに対する対応ということになります。
Ver.4.3 時点でこの問題に対する対応は以下のようになっています。

■キャッシュの制御
ページベース開発モデルのみ、ブラウザにキャッシュを許可しないというHTTPレスポンスヘッダを自動で付加する機能があります。
これは、設定ファイル conf/imart.xml で機能の有効・無効を設定します。(※1)

■リンクの制御
仮に、キャッシュされたページが表示されてしまった場合、そのキャッシュされた画面に表示されているリンク(またはフォーム)をリクエストした場合の制御 です。

(1) Presentation-Framework
リンクは、トークンと呼ばれる仕組みによって制御されていますので、キャッシュされた画面のリンクはすべて無効になります。
つまり、次ページへのリンクは絶対にできません。

(2)ページベース開発モデル
セッションに対して有効なリクエストであるかどうかをチェックしています。
例えば、クエリの内容を改竄されたり、ログアウト後にキャッシュされたページのリンクをリクエストした場合は、いずれも無効と判断し、エラー扱いとなりま す。

■「戻る」ボタン自体の制御
基本的に、ブラウザの機能になるため制御は不可能です。
ただし、intra-martのタグライブラリを利用した場合のみ、ある程度制御できます。

(※1)ただし、「キャッシュの制御」には注意点があります。
この機能を使うと、ブラウザがページをキャッシュしにくくなるため、キャッシュを利用した機能が正常に動作しなくなります。
・クライアント側・・・history.back() など
・サーバ側・・・Module.alert.back() など
ここで問題になるのが、intra-mart BaseModule が標準で持っているメンテナンス系画面でも、入力エラー時のメッセージ画面等の一部で Module.alert.back() を使っていることです。
これらの画面でエラーメッセージ画面から元の入力画面に戻れないという現象が発生することがあります。

さて、Ver.5.0 ではどうなるか?・・・というと、

■NoCacheFilter を標準提供します。
im-J2EE Framework およびページベース開発モデルに標準設定する予定です。
これによって、im-J2EE Framework やページベース開発モデルの画面は、ブラウザにキャッシュされなくなります。
#ブラウザの挙動に依存するので、正確には「キャッシュされにくくなる」と
#表現するのが適切です。

■メンテナンス画面の多くは Flash によって作成しています。
Flash の画面コンポーネントはブラウザのキャッシュ対象となりますが、画面自体がキャッシュされるワケではなくなります。
画面コンポーネントがデータをサーバから受け取って、初めて画面が表示されます。データ自体はキャッシュされませんので、画面がキャッシュされても情報が 表示される事はありません。

以上参考にしてください。

-開発Blog
-

執筆者:

関連記事

no image

IM-共通マスタ CSVスナップショットインポートのパフォーマンス検証

WebPlatform/AppFramework Ver.7.2 パッチ6の要件16570にて、IM-共通マスタからアプリケーション共通マスタへの同期処理のパフォーマンス改善を行い、下記効果を確認しま …

no image

「im-J2EE Framework」仕様書

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 技術者向け資料が新しく公開されました …

no image

intra-mart Advent Calendar 2013 第18日:認可関連のタグ3種(imAuthz, imUrlAuthz, imAuthzPolicyEditor)

この記事は、intra-mart Advent Calendar 2013 第18日の記事です。 今回は、認可関連のタグ3種(imAuthz, imUrlAuthz, imAuthzPolicyEdi …

no image

QRコードの表示

こんにちは、開発本部の榎本です。 intra-mart上での画面開発において、QRコードを利用したいという場合があるかと思います。 今回はhttp://www.d-project.comから配布されて …

no image

intra-mart Advent Calendar 2013 第1日:iAPでもiWPみたいにURLだけでログインする方法

気がつけば、もう12月です。12月といえば、クリスマス。そのクリスマスを指折り待つ、技術系Advent Calendarを久しぶりにimでもやってみたいと思います。正直、どこまでネタがもつかかなり微妙 …

まだデータがありません。

RSSRSSRSSRSS