「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>不正操作防止機能]] *目次 [#a33288fb] #contents *概要 [#kdaa5923] [[不正操作防止機能]]では以下を抑止します。 -二重送信 -リロード -バック・サブミット -キャッシュの参照 -Sessionタイムアウト発生後に残存画面からPOSTバック 上記に該当するような操作を行っていないか、~ [[fiddler - http debugging proxy>http://www.telerik.com/fiddler]]等を使用して分析してみてください。 また、Sessionにブラウザ・ウィンドウ毎のRequestチケットを格納しているので、~ セッション消去(FxSessionAbandon)によって、不正操作が誤検知されることがあります。 *不正操作防止機能の局所化 [#d6aa249d] **概要 [#l82b4ccd] 他の処理と干渉し合う場合、不正操作防止機能を部分的にOFFに設定できます。 -不正操作防止機能を画面レベルでOFFにするには、Page_Initで this.CanCheckIllegalOperation = false; >と[[this.CanCheckIllegalOperationプロパティ]]にfalseのフラグを設定します。 **詳細 [#z3df98d5] ボタン単位等の局所化が必要な場合は、以下の方法に従ってください。 -一部のボタンだけ不正操作防止機能を無効にする方法、ポストバックのダウンロード処理などで有効 /// <summary>不正操作防止機能の局所化</summary> void Page_Init(object sender, EventArgs e) { foreach (string key in Request.Form.Keys) { if (key.IndexOf("btnIllegalOperationCheckOFF") != -1) { // btnIllegalOperationCheckOFFボタンで // サブミットされた場合、不正操作防止機能をOFFにする。 this.CanCheckIllegalOperation = false; } } } -一部のボタンだけ不正操作防止機能を有効にする方法、更新ボタンだけに適用したい場合などに有効 --設定 ---app.config の appSettingsセクションで、~ https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Samples/WebApp_sample/WebForms_Sample/WebForms_Sample/app.config#L41 <!-- 不正操作防止機能のon・off(操作履歴の最大数) --> <add key="FxRequestTicketGuidMaxQueueLength" value="0"/> "FxRequestTicketGuidMaxQueueLength=0"(0以下の値)を設定して、不正操作防止機能の機能OFFにします。 --実装 /// <summary>不正操作防止機能の局所化</summary> void Page_Init(object sender, EventArgs e) { // 当該画面だけ、不正操作防止機能をONにする(*.configはOFFに設定)。 this.CanCheckIllegalOperation = true; foreach (string key in Request.Form.Keys) { if (key.IndexOf("btnIllegalOperationCheckON") != -1) { // btnIllegalOperationCheckONボタンで // サブミットされた場合、不正操作防止機能をONにする。 this.CanCheckIllegalOperation = true; } } } **参考 [#za4d3edb] -.NET用アプリケーション フレームワーク ”棟梁” 利用ガイド(ベターユース、FAQ編)~ https://github.com/OpenTouryoProject/OpenTouryoDocuments/blob/master/documents/1_User_Guide/ja-JP/7_User_Guide(BetterUse_and_FAQ).doc --2.3節:不正操作防止機能の局所化 *ASP.NET AJAXの場合 [#u15ee0a3] -ASP.NET AJAXではHTTPリクエストの内容から、~ AJAXの要求であることを識別して、不正操作防止機能を動作させない造りをしています。 --BaseController.Page_Load()~ https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/C%23/Frameworks/Infrastructure/Framework/Presentation/BaseController.cs#L725 -しかし、SPREAD等のASPXに対してAJAX通信を行う~ サードパーティ製UIコンポーネントを使用する場合、不正操作防止機能と干渉し合うことがあります。 -ASPXではなく、WCFやWebAPIのモジュールとAJAX通信を行う場合、干渉は起こりません。