「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>脆弱性対策のポイント]]

*目次 [#nf257003]
#contents

*概要 [#ia074187]
[[ASP.NET>http://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET]]でのサニタイジング方針について纏めます。

*XSRF(CSRF)とは? [#aa0d7174]
XSRF(CSRF)は、あるサイトを操作している時に、~
(従って、ログインも、セッションも存在している状態で)~
操作者が攻撃者のリンクを踏むと、意図せぬ操作を実行されてしまう。

そういう類の攻撃で方法です(「[[ぼくはまちちゃん!>https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%AA#.E3.80.8C.E3.81.BC.E3.81.8F.E3.81.AF.E3.81.BE.E3.81.A1.E3.81.A1.E3.82.83.E3.82.93.E3.80.8D_.E9.A8.92.E5.8B.95]]」が有名)。

*対応方針の材料 [#a119b84a]

**[[ASP.NET Web Forms>http://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Web%20Forms]] [#iffca9fe]

***POST [#x5f84c6b]
-ViewState の ViewStateUserKey にセッション ID を割り当てる方法がメジャー。
-Open棟梁の[[不正操作防止機能]]を使用して防御できる。

***GET [#k5635c95]
-GETでは攻撃しやすいのでQueryStringで予期せぬCRUD等の操作がされないように作る。
-Open棟梁の[[画面遷移制御機能]]の画面遷移チェック機能にある、
~GET防止(ダイレクトリンク(URLの直打ち)の拒否)を使用して防御できる。

**[[ASP.NET MVC>http://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC]] [#b06cdc95]

***POST [#ec6b7116]
-ValidateAntiForgeryToken属性とHtml.AntiForgeryTokenヘルパを使う。

***GET [#q106a76d]
-GETでは攻撃しやすいのでQueryStringで予期せぬCRUD等の操作がされないように作る。

*対応方針の案 [#n243165a]
案件依存だが・・・。

**[[ASP.NET Web Forms>http://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Web%20Forms]] [#w10d9b44]

上記から選択。

**[[ASP.NET MVC>http://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20MVC]] [#h8202df2]

上記から選択。

**判断材料 [#db46d410]
案件毎にCSRF(XSRF)対策のポリシーを持って対応する必要がある。

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

***攻撃対象 [#p4e64803]
一般的に、足がつかない、
-匿名アクセス可能なサイトか、
-フリーメールサービスのアドレスでサインアップ可能なサイト

が多いと考える。

***攻撃者 [#z2bcbf96]
-上記のような匿名アクセスが可能なサイトの場合、誰でも攻撃可能。
-会員制サイトの場合、そのサイトを利用可能な会員でしないと、攻撃方法を見い出せない。

***攻撃方法 [#s35e1263]
操作中にリンクを踏む必要があるので、
-対象システム内にリンクの書き込みを行う事が多い。
-しかし、会員制の場合、通常、書き込み者が解れば足がつくので攻撃しない。

対象システム外に書き込みを行う場合、
-そもそもリンクを踏む可能性が低い。
-会員制サイトを攻撃する場合、会員である必要がある。

GET要求を投げるための偽装テクニックがある。
-0サイズのiframeタグなどを利用する。
-0サイズのimgタグのsrc属性に書く

*参考 [#a8f3a2cf]
-クロスサイト・リクエストフォージェリ(CSRF)対策(ASP.NET,C#,VB.NET編) | Webセキュリティの小部屋~
https://www.websec-room.com/2013/03/06/473

-ASP.NET Core MVC で追加されたAutoValidateAntiforgeryToken属性が便利 - 時が癒す~
http://mrgchr.hatenablog.com/entry/2016/11/16/000000

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS