はじめに
本書の目的
本ドキュメントは、Webセキュリティ診断の基本をわかりやすくまとめています。診断の概要、主な診断方法、対象となる範囲、チェック項目、診断方法の選び方まで順を追って解説します。Webサイトやアプリの脆弱性を発見し、対策を講じるための手引きです。
なぜ重要か
Webサービスは個人情報や決済情報を扱うことが多く、脆弱性があると情報漏えいやサービス停止につながります。例えば、入力欄の不備でデータベースが操作される(SQLインジェクション)や、悪意あるスクリプトが実行される(クロスサイトスクリプティング)といった問題が起きます。診断を通じて早期に問題を見つければ被害を小さくできます。
想定する読者
開発者、運用担当者、情報システム部門、経営者まで幅広く役立ちます。専門知識が浅い方でも読み進められるよう、具体例を交えて説明します。
本書の使い方
まずは全体像を把握し、後の章で詳しい診断手法やチェック項目を確認してください。自身で実施するか外部に依頼するかの判断材料も提供します。
Webセキュリティ診断とは
目的
Webセキュリティ診断(脆弱性診断)は、サイトやアプリに潜む危険を見つけ出す作業です。攻撃を受ける前に弱点を把握し、被害を防ぐために行います。たとえば、ログイン画面や問い合わせフォーム、公開APIなどを点検します。
対象と具体例
対象はホームページ、Webアプリ、API、サーバー設定など幅広いです。具体例を挙げると、入力欄に悪意のある文字を入れてデータを盗めるか試す検査や、不正にファイルをアップロードできないかを確かめる検査があります。専門用語を使うときは、必ず動作の例で補足します。
診断の流れ
1) 範囲の決定:どのページやサービスを調べるかを決めます。権限の確認は必須です。
2) 情報収集:公開情報や設定を調べます。
3) 脆弱性の確認:自動ツールと手動の組合せで検査します。
4) 報告と優先順位付け:見つかった問題を分かりやすく報告し、対応の優先度を付けます。
誰が行うかと注意点
社内の担当者でも外部の専門会社でも行えます。外部に依頼する場合は、テスト範囲や実施時間、緊急連絡先を事前に取り決めてください。診断は実稼働環境で行うことが多いため、事前の合意とバックアップが重要です。
成果物と次のステップ
通常は、発見した脆弱性の詳細、再現手順、リスク評価、修正案がまとめられた報告書が提供されます。報告を受けて修正を行い、再検査で対策が有効か確認します。
診断方法の種類
概要
診断方法は主に「ツール診断」「手動診断」「ペネトレーションテスト」「組み合わせ診断」の4つに分かれます。目的や予算、リスクに応じて使い分けます。
ツール診断(自動診断)
自動スキャンツールで短時間に広範囲を調べます。例:URLを一括でスキャンして、既知の脆弱性や設定ミスを検出します。利点は効率とコストの低さ、欠点は誤検知や複雑な脆弱性の見落としです。
手動診断
専門家が画面操作やリクエストのやり取りを手で確認します。例:入力欄で特殊な文字列を試し、想定外の動作や情報漏えいを調べます。深掘りして誤検知を減らし、ビジネスロジックの弱点も見つけられます。
ペネトレーションテスト(侵入テスト)
実際の攻撃を模擬し、システムの耐性を評価します。許可範囲や影響範囲を事前に定め、サービス停止やデータ破損を避ける合意のもとで実施します。
組み合わせ診断
まず自動診断で広く洗い出し、その結果を基に手動診断やペネトレーションテストで重点的に確認します。効率と深度のバランスをとる実務で一般的な方法です。
選び方の目安
短時間で網羅的に調べるならツール診断、深い調査やビジネス影響の確認が必要なら手動やペンテストを選びます。重要度の高いサービスは組み合わせでの実施をおすすめします。
診断対象の種類
Webアプリケーション
Web画面やAPIで動く部分です。ログインやフォーム、ファイルアップロードなどの機能を中心に検査します。代表的な検査項目は入力の不備を突く「SQLインジェクション」「クロスサイトスクリプティング(XSS)」、認証の不備などです。
プラットフォーム(OS/サーバー/ミドルウェア/データベース)
OSやWebサーバー、アプリを動かす基盤です。設定ミスや古いソフト、不要なサービスの有無を確認します。例:不要なポートが開いていないか、パッチ適用状況、データベースのアクセス権設定。
ネットワーク機器
ルーターやスイッチ、ファイアウォールなどです。通信経路やACL、管理インターフェースの保護状態を検査します。例:管理画面が外部に公開されていないか、暗号化の強さ。
クラウドプラットフォーム
AWSやAzureなどの設定を点検します。権限設定(IAM)、ストレージの公開設定、ログ・監査設定が主な対象です。
API・モバイルアプリ・IoT
APIは認証・認可、レート制限、レスポンスの扱いを確認します。モバイルは端末側の保存データ、通信の保護を見ます。IoTは機器の初期設定や通信の暗号化、物理的な安全性も検査対象です。
主要なチェック項目
入出力処理(XSS / SQLインジェクション)
ユーザーからの入力がそのままページやデータベースに反映されると脆弱になります。例:コメント欄にを書き込まれて表示されると、別の利用者の画面で不正な動作が起きます(XSS)。また、検索欄に特殊な文字を入れデータベースを操作されると情報漏えいにつながります(SQLインジェクション)。入力は検証し、出力は適切に変換(エスケープ)します。
入力検証と出力エスケープ
受け取る値の形式や長さを厳しくチェックします。数値は数値だけ、メールアドレスは形式に合うか、ファイルは許可された種類かを確認します。出力時はHTMLやJavaScriptに埋め込む場合に特別な文字を置き換えます。
認証とアクセス制御
誰が何をできるかを正しく決めます。管理者機能は管理者だけに見せる、URL直打ちで権限外の操作ができないようにサーバー側でもチェックします。
セッション管理
ログイン情報を守るために、セッションIDを安全に扱います。セッションクッキーに安全属性を付け、有効期限を短めに設定します。再ログインやログアウト時の処理も確認します。
CSRF対策
利用者の意図しない操作を防ぐため、フォームや状態を変えるリクエストにワンタイムトークンを付けます。これで外部サイトからの不正な送信を防げます。
ファイルアップロード
アップロードされたファイルが実行されないように拡張子や中身を検査し、保存先の権限を制限します。画像に見せかけたスクリプトにも注意します。
安全な通信(TLS/HTTPS)とセキュリティヘッダー
通信を暗号化して盗聴を防ぎます。さらにContent-Security-PolicyやX-Frame-Optionsなどのヘッダーで攻撃を抑えます。
エラーハンドリングとログ管理
内部情報を含む詳細なエラーを表示しないようにします。異常を記録し監視することで早期発見に役立てます。
コンテンツ公開設定と権限管理
公開範囲やファイルの公開設定を点検します。不要なファイルや管理用画面が公開されていないか確認します。












