第9回 マイクロソフトの技術による 各問題の対処
Download
Report
Transcript 第9回 マイクロソフトの技術による 各問題の対処
第9回
マイクロソフトの技術による
各問題の対処
NECラーニング
山崎 明子
マイクロソフトが提供する
セキュリティ機能
Windowsのセキュリティ機能
Server製品群
ACL
IPSec
IIS
SQL Server
.NET Frameworkの機能
アプリケーションのセキュアな実行
セキュリティ関連のクラスライブラリ
.NET Framework の
セキュリティ機能
安全なアプリケーションの開発を支援
実行環境(ランタイム)が管理
クラスライブラリ
コンポーネント/コントロール
暗号化
Web アプリケーション/サービスのセキュリティ
安全な実行をサポート
ASP.NETの機能
Windows のセキュリティ機能を補完
復習:SQL インジェクション
効果的な対処
Webアプリケーションの場合・・・
ASP.NETの検証コントロール
入力があるか?
データ型は適切か?
予定している範囲内のデータか?
正規表現の適用
検証コントロールを組み合わせて必要な検証をシン
プルに実現
復習:クロスサイトスクリプティング
効果的な対処
入力されたデータをチェック
ASP.NETを利用している場合・・・
ASP.NET検証コントロールを利用
生成されるHTMLやURLを無害化
ASP.NETを利用している場合・・・
HTML 出力のエンコード
HttpUtility.HtmlEncode メソッド
URL 出力のエンコード
ttpUtility.UrlEncode(urlString)メソッド
復習:バッファ オーバーフロー
効果的な対処
VBやC#を利用する
基本的にバッファーオーバーフローはC/C++で発生
.NETの安全な文字列
Stringクラス
データのコピー、連結には常に新規の領域が確保される
StringBuilderクラス
バッファ境界をチェックできるクラス
効果的な対処
C/C++の/GSオプション
範囲を超えて上書きしたら気づくような仕組み
データ領域とリターンアドレスの間にちょっとしたデータを
おいておく
もし、それが変化していたらリターンアドレスもかわってい
る!・・・と判断
ちょっとしたデータ
リターンアドレス
XXXXXXXXX
スタック領域
復習:DoS攻撃
効果的な対処
ディスクリソースを枯渇させる攻撃には・・・
分離ストレージが効果的
データ書き込みを許容できる範囲を制限
IsolatedStorageFile isoStore =
IsolatedStorageFile.GetUserStoreForAssembly();
アプリケーション毎
ユーザー毎
復習:暗号化
共有キー暗号方式
アルゴリズムを選択する
DESCryptoServiceProvider
TripleDESCryptoServiceProvider
RijndaelManaged
共有キーを生成
共有キーを使用してデータを暗号化/復号化
公開キー暗号方式
アルゴリズムを選択する
RSACryptoServiceProvider
DSACryptoServiceProvider
秘密キーと公開キーのペアを生成
データを暗号化または復号化
ハッシュアルゴリズム
各種ハッシュアルゴリズム
HMACSHA1
MACTripleDES
MD5CryptoServiceProvider
SHA1Managed
SHA256Managed
SHA384Managed
SHA512Managed
まとめ
.NET Frameworkのセキュリティ機能を利用
各種攻撃への対処
明示的な対処法
暗黙の対処法
Windowsやサーバー製品のセキュリティ機能を補完
組み合わせて利用
多層防御の考え方
リファレンス
開発者のためのセキュリティサイト
MSDNデベロッパーセキュリティセンター
http://www.microsoft.com/japan/msdn/security/
開発者向け セキュリティ オンライン セミナー
http://www.microsoft.com/japan/msdn/security/seminars/
アプリケーションセキュリティの基礎
実践! セキュアなコード記述 Part 1
実践! セキュアなコード記述 Part 2
実践! .NET Framework を利用したアプリケーション セキュリ
ティの実装