はじめに
目的
本ドキュメントは、Web系のセキュリティについて必要な知識を整理するために作成しました。日常的に使うオンラインサービス(ネットショップの会員情報、ログインフォーム、問い合わせフォームなど)を例に、何を守るべきか、どのような対策があるかを分かりやすく説明します。
想定読者
開発者、運用担当者、セキュリティ初心者や担当になった方を想定しています。専門用語は最小限にし、具体例で補足しますので、初めて学ぶ方でも理解しやすい内容です。
本書の構成と読み方
第2章で基本の定義と重要性を説明し、第3章以降で実務に役立つフレームワークや技術を解説します。WAFや主要な攻撃の解説、実装すべき対策、アクセス制御の原則まで順に学べます。まずは第2章から順番に読むことをおすすめしますが、目的に応じて必要な章だけを参照しても役立ちます。
注意点
具体的な操作手順や設定例は環境によって異なります。ここでは考え方と代表的な対策を中心に説明しますので、実行時は使用するソフトやサービスの公式ドキュメントも併せて確認してください。
Webセキュリティの基本定義と重要性
定義
Webセキュリティとは、インターネットや社内ネットワークに接続されたシステムやデータを、不正アクセスや悪意ある攻撃から守る取り組みです。特にWebアプリケーションのレベルで行われる攻撃が増えており、単純なネットワーク防御だけでは十分でありません。
なぜ重要か
個人情報や決済情報を扱うサイトでは、一度の侵害で大きな被害が出ます。サービスが止まれば顧客の信頼が失われ、業務や売上に直結するため優先的に守る必要があります。
具体例
- ネットショップで顧客のカード情報が漏れる。
- 企業サイトが改ざんされて誤情報が掲載される。
- 大量アクセスでサービスが使えなくなる(可用性の問題)。
従来の対策との違い
ネットワークファイアウォールは通信の入り口を制御しますが、入力値の検査やアプリ特有の攻撃には弱いです。そこでWAF(Web Application Firewall)が、アプリの振る舞いを監視して攻撃を遮断します。
日常でできること
ソフトを最新に保つ、入力の検証、HTTPSの利用、不要な情報公開を控えるなど、基本を積み重ねることでリスクを減らせます。
情報セキュリティの7要素フレームワーク
機密性
機密性は権限のない人が情報を見られないことを指します。たとえば顧客データを社外の人が閲覧できないようにアクセス制限や暗号化を使います。パスワード管理やファイルの暗号化が有効です。
完全性
完全性は情報が無断で改ざんされないことです。データのチェックやハッシュ値、更新履歴を残すことで改ざんを検出できます。バックアップも重要です。
可用性
可用性は必要なときにシステムや情報を使える状態にすることです。サーバの冗長化や障害時の切替、定期メンテナンスでサービス停止を防ぎます。
真正性
真正性は利用者やデータが本物であることを確認する仕組みです。強固な認証(多要素認証)や発信元の検証で確かめます。
責任追跡性
誰が何をしたかを追えることです。アクセスログや操作履歴を記録し、問題発生時に原因を特定します。ログの保護も必要です。
否認防止
行為を後で否定できないようにする性質です。電子署名やタイムスタンプで行為の証拠を残します。契約手続きで利用されます。
信頼性
信頼性はシステムが安定して正しく動くことです。テストや監視、定期的な更新により故障や誤動作を減らします。ユーザーが期待通り使える状態を維持します。
WAF(Web Application Firewall)の役割と動作原理
概説
WAFはWebアプリケーションに届く「中身」を検査して悪意ある攻撃を防ぐ装置やソフトです。ネットワークの入り口だけでの通信量ではなく、送られてくるフォーム入力やURL、ヘッダーなどの内容を見ます。これによりSQLインジェクションやXSSといった代表的な攻撃を検出して遮断できます。
何を守るか(具体例)
- ユーザー入力欄:悪意あるスクリプトや不正なデータの挿入を防ぎます。
- 認証処理:不正ログイン試行やセッションの悪用を検出します。
- URLやパラメータ:予期しないコマンドやクエリの実行を遮断します。
動作原理(わかりやすく)
- ブロックリスト型(シグネチャ方式)
- 既知の攻撃パターンを定義して照合します。例えば「’ OR ‘1’=’1’」のようなSQL注入の典型表現を見つけたら遮断します。設定が簡単で即効性があります。
- 許可リスト型(ホワイトリスト方式)
- 正常なリクエストだけを許可し、それ以外を拒否します。許可する形式を厳しく決めるため、未承認の挙動を早く止められますが、柔軟性が必要です。
- 振る舞い検知(アノマリ検知)
- 通常のアクセスと比べて異常な振る舞いを検出します。未知の攻撃にも対応できますが、誤検知の対策が必要です。
運用上のポイント
- ログを確認して誤検知を減らす調整を行います。
- ソフトウェアは定期的にルールを更新します。
- 仮想パッチとして、アプリの修正が間に合わない場合の一時防御に使えます。
WAFは万能ではありませんが、アプリケーション層の防御として有効な第一線です。導入後も監視とチューニングが重要です。
主要なWeb攻撃の種類と対策
SQLインジェクション(SQLi)
何をするか:攻撃者が入力欄に不正なSQL文を入れて、データベースを不正操作し情報を盗みます。例:ログイン欄に “‘ OR ‘1’=’1” を入れて認証をすり抜ける。
対策:
– プレースホルダ/パラメータ化された問い合わせを使い、入力をSQLと分けます。
– 入力値は型や長さで制限し、不要な権限を与えない(最小権限)。
– WAFは攻撃パターンを検出して遮断しますが、WAFだけに頼らず設計で防ぎます。
クロスサイトスクリプティング(XSS)
何をするか:悪意あるスクリプトをページに埋め込み、利用者の情報やセッションを盗みます。種類は反射型、格納型、DOM型があります。
対策:
– 出力時にHTMLエスケープを行い、ユーザー入力を安全に表示します。
– コンテンツセキュリティポリシー(CSP)で外部スクリプトを制限します。
– CookieにHttpOnlyを付けるとJavaScriptから読み取られにくくなります。
– WAFはスクリプトタグや疑わしいJavaScriptパターンを監視してブロックします。
DDoS(分散サービス妨害)
何をするか:大量のアクセスでサービスを過負荷にし応答不能にします。
対策:
– レートリミットで短時間の大量リクエストを制限します。
– CDNやロードバランサーでトラフィックを吸収・分散します。
– ボット管理やIPレピュテーションで悪質な送信元を遮断します。
– WAFは異常なアクセスを検知して制限動作を取れますが、ネットワーク層対策と組み合わせます。
各攻撃でWAFは有効な防御手段ですが、堅牢な対策は設計と実装の両方から行うことが重要です。
実装すべき技術的対策
ファイアウォールとIDS/IPS
ネットワークの入り口で不正な通信を遮断します。ファイアウォールは許可した通信だけ通し、IDS/IPSは怪しい振る舞いを検知・遮断します。たとえば特定ポートへの大量アクセスをブロックするルールを設定します。定期的にルールを見直してください。
アンチウイルスとマルウェア対策
端末やサーバーに常駐するソフトでウイルスや悪意のあるプログラムを検出・除去します。自動スキャンと定義ファイルの自動更新を有効にし、メール添付やUSB経由の感染を減らします。
多要素認証(MFA)
パスワードだけでなくワンタイムコードや認証アプリ、ハードウェアトークンを組み合わせます。たとえば重要な管理画面には必ずMFAを適用します。なりすましリスクが大きく下がります。
通信とデータの暗号化(SSL/TLS)
通信は常にTLSで暗号化し、証明書を正しく管理します。保存データは必要に応じて暗号化してから保管します。証明書の有効期限切れを監視してください。
Webフィルタリングとコンテンツ制御
危険なサイトやカテゴリをブロックすることでマルウェア感染やフィッシング被害を減らします。社員のブラウザ設定と組み合わせて運用すると効果的です。
OS・ソフトウェアのアップデートとパッチ管理
脆弱性は放置すると侵入経路になります。自動更新や定期パッチ適用の仕組みを整え、テスト環境で検証した後に本番適用します。古いソフトは段階的に廃止してください。
運用上の注意点
ログを集約して監視し、異常を早く検知する仕組みを作ります。バックアップを定期的に取得し、復旧手順を確認しておきます。これらの対策を組み合わせて多層防御を実現してください。
アクセス制御と認可の原則
概要
必要な人だけが必要な情報に触れる仕組みを作ることが重要です。最小権限の原則は、不正利用や情報漏えいを抑えます。具体的な運用やクラウド環境での注意点を解説します。
最小権限の原則
ユーザーやサービスには業務で必要な最小限の権限だけを与えます。たとえば経理担当者は給与データにアクセスできますが、全社員の個人情報には限定的にします。権限は役割や期間で絞ると管理しやすくなります。
役割と属性に基づく制御
役割ベース(RBAC)は部署や職務で権限をまとめます。属性ベース(ABAC)は端末や場所、時間などの条件も使い細かく制御します。クラウドでは端末の状態や接続元も判断材料にしてください。
多要素認証と条件付きアクセス
パスワードだけでなくワンタイムコードやデバイス確認を組み合わせます。特に外部からの接続や高権限操作では多要素認証を必須にしましょう。
分離と一時的権限
重要な業務は承認者と実行者を分けます(承認と実行の分離)。臨時作業には期限付きの一時権限(JIT)を使い、作業後に自動で取り消します。
ログと定期レビュー
誰が何をしたかを記録して監査できるようにします。権限は定期点検して不要な権限を削除します。問題が見つかれば速やかに権限を無効化してください。
セキュアなデフォルト
初期設定は「拒否」を基本にし、必要に応じて許可を追加します。これにより誤設定によるリスクを減らせます。












