Download
Entwicklung
Konto
Download
Entwicklung
Anmelden
Vergessen Konto/Passwort
Konto erstellen
Sprache
Hilfe
Sprache
Hilfe
×
Anmelden
Anmeldename
Passwort
×
Vergessen Konto/Passwort
Übersetzungsstatus von Deutsch
Kategorie:
Software
Personen
PersonalForge
Magazine
Wiki
Suche
OSDN
>
Finden Software
>
System
>
TERASOLUNA Framework
>
Foren
>
Offene Diskussion
>
入力画面>確認画面>完了画面におけるActionFormについて
TERASOLUNA Framework
Beschreibung
Projekt Zusammenfassung
Entwickler-Dashboard
Web-Seite
Entwickler
Bildergalerie
RSS Feed-Liste
Aktivität
Statistiken
Historie
Downloads
Aller Releases-Liste
Statistiken
Quellcode
Quellcode-Repositorys-Liste
Subversion
Repository ansehen
Ticket
Ticket-Liste
Liste der Meilensteine
Typenliste
Komponentenliste
Liste der zuletzt benutzten Tickets/RSS
Neue Ticket abschicken
Dokumente
Wiki
Titelseite
Titel-Index
Kürzliche Änderungen
Doc Mgr
List Docs
Kommunikation
Foren
Forum-Liste
Offene Diskussion (1277)
Mailinglisten
Alle Mailinglisten
terasoluna-information
Neuigkeiten
Foren:
Offene Diskussion
(Thread #38028)
Zurück zur Thread-Liste
RSS
入力画面>確認画面>完了画面におけるActionFormについて (2016-09-11 19:29 by
age-griever
#78699)
Antworten
Ticket erstellen
"TERASOLUNA Thin 2.0.6.2"で、オーソドックスな以下の画面遷移を実現
する場合についての質問です。
入力画面→(バリデート)→確認画面→(DB更新)→完了画面
ここで、ActionFormのスコープはsessionとし、確認画面からのサブミット時に
バリデート済のActionFormからBLogic-IO機能でDTOへ転送してDB更新をする
流れです。
この際、入力画面・確認画面からの両サブミットのアクション定義における
name属性にActionForm名を定義しています。
<!-- 入力画面(insert.jsp)表示用アクション -->
<action path="/userManager/insertSCR" name="_userManagerForm" scope="session" parameter="/userManager/insert.jsp"/>
<!-- 確認画面(validate.jsp)への遷移アクション -->
<action path="/userManager/validateSCR" name="_userManagerForm" scope="session" validate="true" input="/userManager/insertSCR" parameter="/userManager/validate.jsp"/>
<!-- 完了画面(result.jsp)への遷移アクション -->
<action path="/userManager/insertBL" name="_userManagerForm" scope="session"
<exception ・・・略・・・>・・・略・・・</exception>
<forward name="success" path="/userManager/resultSCR" />
<forward name="failure" path="/userManager/insertSCR" />
</action>
これだと仮に、悪意のユーザが確認画面からのサブミットを偽装して、フォーム項目が
POSTされる様にした場合、バリデートをバイパスしてActionFormの更新が
できてしまうと思うのですが、
これをサーバサイド側の定義等で防止する方法をご教示頂きたい。
以下、いくつか、対応策を検討しましたが、うまくいきません。
・「確認画面からのサブミット時にもバリデートを行う」方法
→折角、ActionFormをsessionに格納してるのだから、
バリデートは入力画面からのサブミットのみにしたい。
・確認画面からのサブミットのアクション定義にダミーのフォームを指定する。
→BLogic-IOの<blogic-params>定義で、source属性にsessionにしても、
明示的にActionForm名を指定できないので、×。
以上、宜しくお願いします。
Reply to #78699
×
Subjekt
Körper
Reply To Message #78699 > "TERASOLUNA Thin 2.0.6.2"で、オーソドックスな以下の画面遷移を実現 > する場合についての質問です。 > > 入力画面→(バリデート)→確認画面→(DB更新)→完了画面 > > ここで、ActionFormのスコープはsessionとし、確認画面からのサブミット時に > バリデート済のActionFormからBLogic-IO機能でDTOへ転送してDB更新をする > 流れです。 > > この際、入力画面・確認画面からの両サブミットのアクション定義における > name属性にActionForm名を定義しています。 > > <!-- 入力画面(insert.jsp)表示用アクション --> > <action path="/userManager/insertSCR" name="_userManagerForm" scope="session" parameter="/userManager/insert.jsp"/> > > <!-- 確認画面(validate.jsp)への遷移アクション --> > <action path="/userManager/validateSCR" name="_userManagerForm" scope="session" validate="true" input="/userManager/insertSCR" parameter="/userManager/validate.jsp"/> > > <!-- 完了画面(result.jsp)への遷移アクション --> > <action path="/userManager/insertBL" name="_userManagerForm" scope="session" > <exception ・・・略・・・>・・・略・・・</exception> > <forward name="success" path="/userManager/resultSCR" /> > <forward name="failure" path="/userManager/insertSCR" /> > </action> > > これだと仮に、悪意のユーザが確認画面からのサブミットを偽装して、フォーム項目が > POSTされる様にした場合、バリデートをバイパスしてActionFormの更新が > できてしまうと思うのですが、 > これをサーバサイド側の定義等で防止する方法をご教示頂きたい。 > > 以下、いくつか、対応策を検討しましたが、うまくいきません。 > > ・「確認画面からのサブミット時にもバリデートを行う」方法 > →折角、ActionFormをsessionに格納してるのだから、 > バリデートは入力画面からのサブミットのみにしたい。 > > ・確認画面からのサブミットのアクション定義にダミーのフォームを指定する。 > →BLogic-IOの<blogic-params>定義で、source属性にsessionにしても、 > 明示的にActionForm名を指定できないので、×。 > > > > > 以上、宜しくお願いします。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Anmelden
Nickname
Vorschau
Eintrag
Abbrechen
Re: 入力画面>確認画面>完了画面におけるActionFormについて (2016-09-16 15:46 by
itoumsf
#78733)
Antworten
Ticket erstellen
ご質問のような実装をする場合、ご質問内容の対応策にも記載されている通り、
確認画面からのサブミット時にもバリデートを行なうことを推奨します。
入力画面→(バリデート1)→確認画面→(バリデート2)→(DB更新)→完了画面
何らかの理由により、サーバ側でのバリデートを一度で済ませたい場合、
次のような方法があります。
・入力画面後のバリデート1をクライアント側で行なう
入力画面後のバリデート1をJavascriptなどを用いてクライアント側に実行させ、
バリデート2のみをサーバ側でチェックすることで、
サーバ側のバリデートを1度で済ませる事ができます。
この時、両方のバリデーションルールが一致するものでなければ、
ユーザビリティの低下を招く恐れがありますのでご注意ください。
(ルールが等しくない場合、確認画面でのサブミットを何の不正もなく行ったにも関わらず、
バリデーションエラーとなる場合があり、ユーザの混乱を招く可能性があります。)
特に理由のない場合は、前者の方法をおすすめします。
Reply to
#78699
Reply to #78733
×
Subjekt
Körper
Reply To Message #78733 > ご質問のような実装をする場合、ご質問内容の対応策にも記載されている通り、 > 確認画面からのサブミット時にもバリデートを行なうことを推奨します。 > > 入力画面→(バリデート1)→確認画面→(バリデート2)→(DB更新)→完了画面 > > 何らかの理由により、サーバ側でのバリデートを一度で済ませたい場合、 > 次のような方法があります。 > > ・入力画面後のバリデート1をクライアント側で行なう > 入力画面後のバリデート1をJavascriptなどを用いてクライアント側に実行させ、 > バリデート2のみをサーバ側でチェックすることで、 > サーバ側のバリデートを1度で済ませる事ができます。 > > この時、両方のバリデーションルールが一致するものでなければ、 > ユーザビリティの低下を招く恐れがありますのでご注意ください。 > (ルールが等しくない場合、確認画面でのサブミットを何の不正もなく行ったにも関わらず、 > バリデーションエラーとなる場合があり、ユーザの混乱を招く可能性があります。) > > 特に理由のない場合は、前者の方法をおすすめします。
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Anmelden
Nickname
Vorschau
Eintrag
Abbrechen
Re: 入力画面&gt;確認画面&gt;完了画面におけるActionFormについて (2016-09-16 21:20 by
age-griever
#78735)
Antworten
Ticket erstellen
ご教示、ありがとうございました。
ご推奨頂いた「確認画面からのサブミット時にもバリデートを行なう」を採用する方向で
検討したいと思います。
本件、クローズとさせてください。
Reply to
#78733
Reply to #78735
×
Subjekt
Körper
Reply To Message #78735 > ご教示、ありがとうございました。 > > ご推奨頂いた「確認画面からのサブミット時にもバリデートを行なう」を採用する方向で > 検討したいと思います。 > > 本件、クローズとさせてください。 >
You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.)
Anmelden
Nickname
Vorschau
Eintrag
Abbrechen