第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 を利用したアプリケーション セキュリ ティの実装
© Copyright 2024 ExpyDoc