Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

不正操作防止機能では以下を抑止します。

  • 二重送信
  • リロード
  • バック・サブミット
  • キャッシュの参照

上記に該当するような操作を行っていないか、
fiddler - http debugging proxy等を使用して分析してみてください。

また、以下のような操作で、不正操作と誤検知されることがあります。

誤検知

HTTP電文欠損による誤検知

IEでは(NW帯域幅が狭い場合など)、

  • Responseを受信し切る前に次のPOSTバック(Submit)を実行できることがあります。
  • その場合、次のRequestからResponseに含まれる筈のFormの項目が欠損することがあり、
    結果として、不正操作と識別されることがありますが、これは正常な動作になります。
  • この問題は、二重送信防止機能をONにすることで防ぐことが出来ます。

Sessionタイムアウト・消去による誤検知

Sessionにブラウザ・ウィンドウ毎のRequestチケットを格納しているので、
Sessionタイムアウト発生や、Session消去後に残存画面からPOSTバック(Submit)すると、
不正操作と誤検知されることがあります。

AJAXによる誤検知

  • ASP.NET AJAXではHTTPリクエストの内容から、
    AJAXの要求であることを識別して、不正操作防止機能を動作させない造りをしています。
  • しかし、SPREAD等のASPXに対してAJAXでPOSTを行うような、
    サードパーティ製UIコンポーネントを使用する場合、
    不正操作防止機能と干渉し合うことがあります。
  • ASPXではなく、WCFやWebAPIのモジュールとAJAX通信を行う場合、干渉は起こりません。

不正操作防止機能の局所化

概要

他の処理と干渉し合う場合、不正操作防止機能を部分的にOFFに設定できます。

  • 不正操作防止機能を画面レベルでOFFにするには、Page_Initで
    this.CanCheckIllegalOperation = false;

this.CanCheckIllegalOperationプロパティにfalseのフラグを設定します。

詳細

ボタン単位等の局所化が必要な場合は、以下の方法に従ってください。

一部のボタンだけ不正操作防止機能を「無効」にする方法

ポストバックのダウンロード処理などで有効

/// <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;
    }
  }
}

一部のボタンだけ不正操作防止機能を「有効」にする方法

更新ボタンだけに適用したい場合などに有効

  • 実装
    /// <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;
        }
      }
    }

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-08 (月) 09:44:01 (1748d)