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

-[[戻る>設計のポイント]]
-戻る
--[[FAQ - その他]]
--[[設計のポイント]]

*目次 [#v5810315]
#contents

*概要 [#c023adca]
脆弱性対策のポイント

*主なモノ [#jb87aa89]
**[[SQLインジェクション対策の実装方針]] [#q3067e97]
**[[SQLインジェクション対策の実装方針>https://techinfoofmicrosofttech.osscons.jp/index.php?SQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%AF%BE%E7%AD%96%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E9%87%9D]] [#q3067e97]

**[[XSS対策の実装方針]] [#x3c5804e]
Open棟梁では、

**[[CSRF(XSRF)対策の実装方針]] [#z96a6a63]
-パラメタライズド・クエリ
--[[静的パラメタライズド・クエリ]]
--[[動的パラメタライズド・クエリ]]

*その他、一般的な脆弱性 [#xce1a751]
**ネットワークの暗号化(HTTPSやSSL-VPN) [#v5a384d0]
-基本的に、電文の内容をガードする。
-Sessionにデータを格納すれば、電文には乗らないが、~
下記[[セッション ハイジャック>#xc05b080]]で、漏洩する危険はある。
-[[バッチクエリ作成支援機能]]~
パラメタ数に上限があるため、この機能ではパラメタ文字列としてSQL内部に組み込む。~
このため、この機能では、文字列パラメタのエスケープ処理を実装している。

**インジェクションに注意 [#z161e17b]
他システム、エンドユーザからの入力データは信用しない。
を使用する。

-エンドユーザ入力は、必ずチェックしてから利用する。
-これは、各種を防ぐ、基本的な防護策である。
-ASP.NETでは、以下の方法でインジェクション系の攻撃をチェックできる。
**[[XSS対策の実装方針>https://techinfoofmicrosofttech.osscons.jp/index.php?XSS%E5%AF%BE%E7%AD%96%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E9%87%9D]] [#x3c5804e]
Web Formsのカスタムコントロール([[バリデーション機能付きカスタム コントロール]])の~
テンプレートをカスタマイズして、サニタイジング処理のカスタマイズ(追加)が可能。

***クライアント スクリプト インジェクション [#e1c04b7d]
-別名、クロスサイト スクリプティング(XSS)
-ASP.NETで検証される(デフォルトの設定で検証は有効)。
-詳細:[[XSS対策の実装方針]]
**[[CSRF(XSRF)対策の実装方針>https://techinfoofmicrosofttech.osscons.jp/index.php?CSRF%28XSRF%29%E5%AF%BE%E7%AD%96%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E9%87%9D]] [#z96a6a63]
上記のリンク先の対策以外に、Open棟梁では、

***SQLインジェクション [#nc754092]
-パラメタライズド・クエリで検証される。
-詳細:[[SQLインジェクション対策の実装方針]]
-Web FormsのPOSTは[[不正操作防止機能]]を、

***OSコマンド インジェクション [#q8105ec3]
チェックが必要な部位は、アプリケーションでチェックする必要がある。
-Web FormsのGETは[[画面遷移制御機能]]の~
画面遷移チェック機能にある、GET防止機能を

***バッファ オーバー フロー [#cb565149]
.NETでは発生しないが、アンマネージド・モジュールに入力データを渡す場合は注意。
使用してコレを防御することもできる。

**セッション ハイジャックの防止 [#xc05b080]
特にSession Cookieを盗み、ユーザのSession情報を盗み出す方法。
*参考 [#u480e700]
**[[脆弱性対策のポイント - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?%E8%84%86%E5%BC%B1%E6%80%A7%E5%AF%BE%E7%AD%96%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88]] [#f9c678ba]

***ネットワークの暗号化(HTTPSやSSL-VPN) [#q0b38462]
-ネットワークのパケット キャプチャを行い、Session Cookieを盗む事ができる。
-このため、ネットワークの暗号化(HTTPSやSSL-VPN)が必要になる。

***XSS対策を行う [#h1f50f9d]
-ネットワークの暗号化(HTTPSやSSL-VPN)をしていても、~
クロスサイト スクリプティング(XSS)で、Session Cookie、認証チケットなどが漏洩する。
-詳細:[[XSS対策の実装方針]]

**データの格納場所、暗号化・改竄防止 [#tf6e738e]
クライアントに見せられないデータ、改竄の危険性があるデータは、

***データの格納場所 [#kcf58d7d]
サーバ側のSessionなどに持たせクライアントから見えないようにする。

***暗号化・改竄防止ロジック [#t8378800]
または、ネットワークの暗号化(HTTPSやSSL-VPN)とは別に、ロジックにより個別に暗号化・改竄防止する。

この際、
-暗号化や、改竄防止のロジックには、コードやアプリケーション設計の秘匿性を要求しない。
-暗号化や、改竄防止のロジックが露呈してもクラッキングされないようにするために、~
[[一般に流布し安全性が実践的に保証されている暗号化ロジックを利用する。>https://techinfoofmicrosofttech.osscons.jp/index.php?.NET%E3%81%AE%E7%BD%B2%E5%90%8D%E3%83%BB%E6%9A%97%E5%8F%B7%E5%8C%96%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0]]

**設計面 [#r6a67eea]
***多重防御に基づいた設計 [#u6e09d90]
全体のセキュリティ バランスをとった、多重防御に基づいた設計

-部分的にセキュリティを高めても、費用対効果が高いとはいえない。
-複数の手段を組み合わせて実施したほうが、セキュリティ強度は高めやすい。
-従って、要求されるセキュリティ強度をバランスよく実現する。

***最小特権の原則に従って設計 [#v6918259]
-予め、定められた以上のことができないようにアプリケーションを設計する。
-ロックダウンの原則を受け入れ、必要なサーバ機能だけを利用可能にする。
-ASP.NETの実行ユーザ アカウント、DBへのログイン アカウントも、適切な権限になるようにする。

**運用面 [#fb7dcd92]
***セキュリティ アップデートの適用 [#l9a3c505]
-セキュリティ アップデートは必ず適用すること。
-テスト環境でテストした後、タイムリーにアップデートを実施する。
--セキュリティ アップデートをタイムリーに適用することが重要。
--このため、製品修正情報の収集 ~ テスト環境などの整備が必要となる。


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