第6回 検証しないデータが 引き起こす問題 問題とその対処 NECラーニング 山崎 明子 現実世界では・・・ あなたは知らない人が尋ねてきたらどうしますか? その人が信頼できる人かどうかをチェック 確実に信頼できるとわかったときだけ招き入れる どこでチェックするか? すべての家の入り口 門(塀の入り口) どのような問題が発生? クロスサイト スクリプティング バッファ オーバーフロー DoS攻撃 SQLインジェクション その他 さまざまな問題 どのような場所で検証? エントリーポイント ユーザによる入力 他システムとの連携ポイント 信頼境界 ここを超えるデータを検証 信頼境界 検証によるオーバーヘッド 発生するセキュリティ の問題の大きさ 検証による オーバーヘッド < ハッキングによる システム応答性の劣化 問題発生時の 回復のためのコスト 検証の基本 有効なデータのみを受け入れる それ以外はすべて拒否 検証が難しいポイント 有効なデータの表現方法が複数ある 無効なデータパターンを見落とす可能性がある C:\dir1\dir2\MyFile.txt C:\DIR1\DIR2\mYfILE.TXT C:\dir1\dir2\dir3\..\MyFile.txt Z:\MyFile.txt (UNC共有を利用している場合) 同じ意味の 別の表現 間違った検証 実行可能形式ファイルを拒否できる? If ファイルの拡張子 = “exe” OR ファイルの拡張子 = “com” OR ファイルの拡張子 = “bat” Then 拒否 End If 適切な検証 ユーザにデータを入力させない 入力データをさまざまな角度からチェック リストから選択させる 「空」でないか? データの大きさ?文字列の長さ? データ型? 範囲は有効? 影響のある特殊文字が含まれていないか? 正規表現の活用 .NETのクラスの利用 効果的な対策 信頼境界の特定 エントリーポイントの特定 信頼できるデータと信頼できない入力 必要十分な検証 効果的な対策 エントリーポイントを減らす 必ず検証を通過するようにする 検証しないデータが引き起こす 問題のまとめ セキュリティのさまざまな問題は検証しないデー タが原因 まずは、データの検証 次に、個別の問題ごとの対処 検証が終わっていないデータは すべて有害! リファレンス 開発者のためのセキュリティサイト MSDNデベロッパーセキュリティセンター http://www.microsoft.com/japan/msdn/security/ 開発者向け セキュリティ オンライン セミナー http://www.microsoft.com/japan/msdn/security/seminars/ アプリケーションセキュリティの基礎 実践! セキュアなコード記述 Part 1 実践! セキュアなコード記述 Part 2
© Copyright 2025 ExpyDoc