はじめに
目的
本ドキュメントは、Webサイトのセキュリティ対策をわかりやすく示すガイドです。フロントエンド、CMS、インフラの三つの観点から、実践的な手順や導入例を丁寧に解説します。初心者から中級者まで、すぐに役立つ情報を目指します。
対象読者
- サイト運営者や開発者
- セキュリティ担当者になり始めた方
- 外注先とやり取りする立場の方
具体的なツール名や設定例を交えて説明するため、実務での導入を想定しています。
範囲と構成
本書は次の三章で構成します。
– フロントエンド観点のセキュリティ対策:XSS対策、ライブラリ管理、通信の保護など
– CMS観点のセキュリティ対策:管理画面のアクセス制御、プラグイン管理、権限の整理など
– インフラ観点のセキュリティ対策:WAF、DDoS対策、バックアップや監視の設計など
多層防御の考え方
一つの対策だけで守るのは難しいため、複数の層で守る「多層防御」を重視します。たとえば、入力の検証でXSSを減らし、さらにコンテンツセキュリティポリシー(CSP)で実行を抑えるといった組み合わせです。ライブラリは定期的に更新し、管理画面は二要素認証やIP制限で保護します。インフラではWAFやレート制限、定期的なバックアップとログ監視を併用します。
各章では具体例と手順を示しますので、順を追って実装していけます。
フロントエンド観点のセキュリティ対策
概要
XSS(クロスサイトスクリプティング)は、悪意あるスクリプトをページに埋め込んで情報を盗む攻撃です。表示時の対策が特に重要です。以下に現場ですぐ使えるポイントを分かりやすく示します。
1. 表示(出力)時のエスケープ
- HTMLは出力時に必ずエスケープします。例:”<“を”<“に置き換える。テンプレートエンジンでは自動エスケープ機能を使います。
- JavaScriptで要素に挿入する際はinnerTextやtextContentを使い、innerHTMLは避けます。
2. ホワイトリスト方式とサニタイズ
- 許可するタグや属性だけを通すホワイトリストを使います(例:, のみ許可)。
- HTMLを受け取る場合は信頼できるライブラリ(例:DOMPurify)でサニタイズします。
3. 外部ライブラリの管理
- ライブラリは定期的にバージョンを更新します。脆弱性報告が出たら速やかに対応します。
- package-lockやyarn.lockを使い依存関係を固定します。自動更新ツール(Dependabot等)を活用します。
4. 認証・セッション対策
- トークンは可能ならHttpOnlyかつSecureなクッキーで管理します。localStorageは避けます。
- セッションは短めの有効期限に設定し、重要操作では再認証を要求します。
5. コンテンツセキュリティポリシー(CSP)と自動検査
- CSPで外部スクリプトやスタイルの許可を絞ります。例:default-src ‘self’; script-src ‘self’ ‘nonce-…’;
- CIで静的解析や依存性スキャンを回し、変更時に脆弱性を検出します。
CMS観点のセキュリティ対策
管理画面へのアクセス制御
管理画面は公開鍵ではなく鍵のかかった扉と考えてください。強力なパスワード(フレーズ形式や長めの文字列)を必ず使い、二要素認証(AuthenticatorアプリやSMS)を有効にします。ログイン試行のレート制限やIPホワイトリストで攻撃を減らせます。管理用のURLを隠す(変更する)といった簡単な対策も有効です。
サーバー側の入力検証
入力は必ずサーバー側で検証します。クライアント側だけに頼らないでください。SQLインジェクション対策としてはパラメータ化クエリ(プリペアドステートメント)を使います。XSS対策では表示時にHTMLをエスケープし、必要なときだけサニタイズします。ファイルアップロードは拡張子とMIME、サイズを確認します。
役割と最小権限の設計
ユーザーに必要最小限の権限だけを付与します。編集者、寄稿者、管理者と役割を分け、管理者権限は限定します。共有アカウントを避け、退職者や不要なアカウントは速やかに無効化します。
不正リクエスト防止と定期的な見直し
CSRFトークンを導入して不正なリクエストを防ぎます。ログや監査記録を定期的に確認し、脆弱なプラグインやテーマは更新または削除します。ユーザー入力や権限設定を定期的に見直し、必要に応じて対策を強化してください。
インフラ観点のセキュリティ対策
WAF(Webアプリケーションファイアウォール)
アプリケーション層の攻撃を監視・遮断します。SQLインジェクションやXSSをブロックする基本ルールを有効にし、誤検知を減らすためにログで挙動を確認しながらチューニングしてください。例:特定のPOSTパラメータをホワイトリスト化する。
DDoS対策とCDN活用
CDNはトラフィックを分散して攻撃を吸収します。静的ファイルはCDN配信、動的はオリジン保護やレート制限で守ります。例:急激なリクエスト増加で自動スケールを抑えるルールを設定。
OS・ソフトウェアの更新管理
リスク評価に基づき優先度を付け、定期的にパッチを適用します。自動更新とステージング環境での検証を組み合わせ、復旧手順を用意してください。
ネットワーク分離とアクセス制御
データベースや管理系は別ネットワークに置き、最小権限のファイアウォールルールを適用します。SSHは踏み台サーバ経由、鍵認証とMFAを併用すると安全です。
ログ監視・バックアップ
ログは集中管理(SIEM)で異常検知とアラート設定を行い、定期的なバックアップと復旧テストを実施します。












