[Seasar-user:14537] [teeda] HTTPパラメータのデータ改ざんへの対応について

Nihonyanagi Yohji [E-MAIL ADDRESS DELETED]
2008年 6月 4日 (水) 01:29:10 JST


はじめまして。

いきなりですみませんが以下のようなケースに対応する方法について質問させて下さい。

入力画面(entry.html)→確認画面(confirm.html)→完了画面(end.html)

EntryPage.java にて以下のように入力項目を定義します。

    @SubapplicationScope
    @Required
    @MaxLength(32)
    @MinLength(2)
    public String name;

ConfirmPage.java、EndPage.java にも同様のフィールドを定義します。

    public String name;


ここで問題です。

入力画面にて入力した情報を確認画面で表示(入力不可)します。
この時のURLが http://hogehoge.com/hoge/confirm.html となります。

ここで、URLを http://hogehoge.com/hoge/confirm.html?name=x と変更してアクセスします。
すると確認画面において name が x で上書きされてしまいます。

スコープから引き継ぐ場所(Pageクラスのフィールド)と、
HTTPパラメータをバインドする場所(Pageクラスのフィールド)が一緒なので当然と言えば当然ですが、
これだと入力時の Validation を無視して後続の遷移時にデータを書き換えることができてしまいます。


このようなケースで、
特定のURL(今回であれば entry.html)で入力、保持されるデータを複数画面にてキャッシュする際、
特定のURL以外では HTTPパラメータをバインドしないようにするにはどのようにすれば良いのでしょうか。


#EntryPage.java にて入力された値を DTO へ移行して、
#DTO そのものを SubapplicationScope にセットしてやれば上書きはできないのかな、と思いますが、
#アプリケーションでほぼすべての入力箇所に対して、それを行うのはかなり面倒かな、と。
#HTTPパラメータで上書きはしないけど、
#スコープにデータがあれば引き継ぐよっていうアノテーションがあると良いかなと思ったりするのですが…
#すでにあったりするのでしょうか。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080604/e202efc9/attachment-0001.html>


Seasar-user メーリングリストの案内