[Seasar-user:11657] [S2Struts]メソッドごとのValidation

Nishiwaki Kiyoyuki [E-MAIL ADDRESS DELETED]
2007年 11月 15日 (木) 11:10:30 JST


西腋と申します。

現在使用しているS2は
S2.3.21
S2Struts 1.2.10
JSP上ではStrutsのタグを使用しています。(S2Strutsのタグは使用していません)


私も作成しているアプリでメソッドごとにValidationの有無を変えたいという要望が
あり
どうにか成らないかと問い合わせられています。

で、S2Strutsのsubmitタグのcancel機能を使用を検討したのですが
コードを読んでいると、ブラウザからの送信データを元に
キャンセルするか否かを決めているようなので非採択となりました。
ブラウザからの送信データは改竄されるものと考えないといけないという方針で
もしかするとデータの改竄が行われてValidationが必要なところで
回避されるのではないかという懸念からです。
(確証は得られていませんし、実証コードもまだありませんが)

また、HTMLのformタグを分けてActionインタフェース・実装を分ける方法も提示しま
したが
画面のデザイン上の問題でHTMLのformタグを分けれないという問題もありこれも非採
択に成りました。


という事で、あれこれ調べてみたのですが
Validationは横断的関心事と見れるので、
POJOのActionのメソッドが呼ばれる前にインタセプターでcommons-validatorを起動
させれると
メソッドごとにValidationの制御を行え、かつブラウザからの送信データに依存して
いないので
セキュリティ上の懸念もなくなるのではないかと思いました。
ブラウザからの送信データの改竄を行っても、改竄して影響を与えられるのは
検証対象の値と、起動するメソッドを指定する値なので、データを改竄しても他のメ
ソッドが呼ばれるだけなので
Validationの回避問題は防げるかと思っています。


で、大まかに作成していたのですがMLでValidationのことが出ましのたで
考えが間違っていないか見ていただければと思っています。
・とくにcommons-validatorの起動方法に自信がありません。Strutsのコードをあれ
これコピーしたので
・セキュリティ上の問題が無いかも見てもらえるとありがたいです。
問題なければこれをベースに作成してもらっても良いかと。

まだ完成していませんし、定数アノテーションにしか対応していませんが。
将来的にはS2のアノテーションの処理と同じく、ファクトリーなどを作成したいので
すが。
FormValidator.java                        commons-validatorでformの検証を起
動する
FormValidatorImpl.java
FormValidateInterceptor.java         Actionにアスペクトするインタセプター。
アノテーションをみて検証の有無を判断
DoSample21Action.java                 Actionのアノテーションの記述例


S2Strutsのコミッターの方へ、以下は希望でありますが。
もし上記の考えが間違っていなければ、現在のS2Strutsに繁栄していただけると非常
にありがたく思います。
Actionのメソッドを起動する前に、EXPORTアノテーションの処理を行っているところ
がありますので
その前で機能を追加できるのではないかとも思っています。

よろしくお願いいたします。

-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: code.zip
型:         application/octet-stream
サイズ:     2296 バイト
説明:       無し
URL:        http://ml.seasar.org/archives/seasar-user/attachments/20071115/415c7431/attachment.obj 


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