Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら RSSフィードのご登録はこちらから
公開日:2013年3月6日
最終更新日:2020年8月13日

クロスサイト・リクエストフォージェリ(CSRF)対策(ASP.NET,C#,VB.NET編)

ASP.NET の CSRF 対策は簡単で、Web フォームの初期化の際に ViewState の ViewStateUserKey にセッション ID を割り当てるだけで対応できます。

・C#

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    ViewStateUserKey = Session.SessionID;
}

・VB.NET

Protected Overrides Sub OnInit(e As EventArgs)
    MyBase.OnInit(e)
    ViewStateUserKey = Session.SessionID
End Sub

この状態で CSRF の攻撃があると以下のようなエラー画面が表示され、攻撃をブロックします。
error

但し、この方法はセッションが既に開始されていることを前提としているので、セッションが開始されていない場合は上記エラーが表示されます。セッションが開始されているか分からない場合は、以下のように強制的にセッションを開始することでエラーを回避出来ます。

・C#

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    if (Session.IsNewSession)
    {
        Session["dummy"] = null;
    }

    ViewStateUserKey = Session.SessionID;
}

・VB.NET

Protected Overrides Sub OnInit(e As EventArgs)
    MyBase.OnInit(e)

    If (Session.IsNewSession) Then
        Session("dummy") = vbNull
    End If

    ViewStateUserKey = Session.SessionID
End Sub

■参考サイト

参考

Webアプリケーションセキュリティに関する記事は、以下のページにまとまっています。ぜひご確認ください。


スポンサーリンク





カテゴリー:Webアプリケーションセキュリティ対策

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA