マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ASP.NETでのCSRF(XSRF)対策方針について纏める。

対応方針の案

案件依存だが・・・。

フレームワーク毎の違い

ASP.NET Web Forms

  • POST
    ViewStateViewStateUserKey? にセッション ID を割り当てる方法がメジャー。
  • GET
    • 攻撃しやすいのでQueryString?で予期せぬCRUD等の操作がされないように作る。
    • 具体的には、画面の初期表示のみにGETを使用するなどする。

ASP.NET MVC

  • POST
    ValidateAntiForgeryToken?属性とHtml.AntiForgeryToken?ヘルパを使う。
  • GET
    • 攻撃しやすいのでQueryString?で予期せぬCRUD等の操作がされないように作る。
    • 具体的には、画面の初期表示のみにGETを使用するなどする。

WebAPI

  • 主に、業務系SPAの裏のWebAPIは同様に対応が必要になる。
  • Cookieに設定したX-CSRF-TOKENを、HTTPヘッダに設定する方式が一般的。
  • ソレ以外のWebAPIは、client_id, client_secretの基本認証やbearer tokenを使用。

判断材料

案件毎にCSRF(XSRF)対策のポリシーを持って対応する必要がある。

診断ツールと診断結果

  • GETが通れば即、warningになるので診断ツールの誤検知が多い。
  • CSRF(XSRF)になっても実際に問題は起きるかどうかはアプリの作りによる。

攻撃対象サイト

一般的に、足がつかない、

  • 匿名アクセス可能なサイトか、
  • フリーメールサービスのアドレスでサインアップ可能なサイト

が多いと考える。

攻撃者の属性

  • 攻撃方法の特定
    • 匿名アクセスが可能なサイトの場合、誰でも攻撃可能。
    • 会員制サイトの場合、そのサイトを利用可能な会員でしないと、攻撃方法を見い出せない。
  • 攻撃方法が解れば、
    • 攻撃自体は誰でも出来る。
    • しかし、最近は、SameSite属性の件の対策もあり、
      同一サイトでないとPOSTでの攻撃も、し難くなって来ている。

一般的な攻撃・対策方法

SessionIDを使うのは非推奨の流れ。

参考

SameSite属性の件

XSRF(CSRF)とは?

脆弱性対策のポイント - Open 棟梁 Wiki


Tags: :テスト


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