Webアプリケーションを開発するエンジニアにとって、セキュリティは後回しにすると必ず痛い目を見る分野です。
機能開発を優先するあまりセキュリティ対策を怠ると、ユーザー情報の流出やサービスの信頼失墜、最悪の場合は法的な責任を問われる事態になりかねません。本記事では、Webエンジニアが最低限、そして確実に押さえておくべき Webセキュリティ用語30選 を、実務シーンに即した「攻撃の仕組み・被害・対策」の3点セットで徹底解説します。
はじめに#
Web開発において「機能が動くこと」と同じくらい重要なのが「安全であること」です。 しかし、攻撃の手法や専門用語は多岐にわたり、全体像を把握するのは容易ではありません。特によくある誤解が**「ライブラリやフレームワークを使っていれば自動的に安全になる」**というものです。
実際には、エンジニアが背後にある仕組みを理解し、適切に設定を行わなければ、最新のツールを使っていても脆弱性は生まれます。本記事では、実務で直面する主要な用語を4つのカテゴリーに分けて整理しました。
カテゴリー1:主要なWeb攻撃(脆弱性)#
Webアプリケーションそのものの設計・実装の不備を突く攻撃です。これらはエンジニアがコードレベルで修正すべき項目です。
1. XSS(クロスサイトスクリプティング)#
ユーザー入力などを経由して、他人のブラウザ上で悪意のあるJavaScriptを実行させる攻撃。
- 📌 攻撃の仕組み: 掲示板のコメント投稿機能などで、
<script>document.cookieを盗む処理</script>をそのまま保存・表示させてしまうことで発動します。 - ⚠️ 被害: ログイン中のセッションID(Cookie)を盗まれ、アカウントを乗っ取られます。
- ✅ 対策:
- エスケープ处理: HTML特殊文字(
<,>,&,",')をHTMLエンティティに変換する。 - CSPの設定: 外部からの不正なスクリプト読み込みをブラウザレベルで禁止する。
- エスケープ处理: HTML特殊文字(
2. SQLインジェクション#
アプリケーションの入力フォームを悪用し、意図しないSQL命令を実行させてデータベースを操作する攻撃。
- 📌 攻撃の仕組み: ログインフォームのID欄に
' OR 1=1 --と入力。プログラム内でSELECT * FROM users WHERE id = '' OR 1=1 --'と連結されると、パスワードなしでログインできてしまいます。 - ⚠️ 被害: 顧客データの全件流出、データの全削除。
- ✅ 対策: プレースホルダ(Prepared Statement) を使い、ユーザー入力を命令として評価させない。
3. CSRF(クロスサイトリクエストフォージェリ)#
ログイン状態のユーザーを騙し、本人の意図しない操作(設定変更、送金、退会など)を強制させる攻撃。
- 📌 攻撃の仕組み: 悪意のあるサイト(罠サイト)にアクセスすると、裏側でターゲットサイトに対して「退会リクエスト」などを勝手にPOST送信させます。
- ⚠️ 被害: 被害者のアカウントで勝手に商品を購入されたり、パスワードを変更されたりします。
- ✅ 対策:
- CSRFトークン: フォームに秘密の値を埋め込み、サーバー側で一致を確認する。
- SameSite属性: Cookieに属性を付与し、別ドメインからのリクエストでCookieを送信させないようにする。
4. ディレクトリトラバーサル#
ファイル名などを指定するパラメータを細工して、公開ディレクトリ以外のファイルを読み取る攻撃。
- 📌 攻撃の仕組み:
image?name=test.jpgをimage?name=../../etc/passwdと変え、サーバーの設定ファイルを覗き見ます。 - ✅ 対策:
- ファイル名にパス区切り文字(
/や\)が含まれていないかバリデーションをかける。 - ID(UUID等)でファイルを管理し、生のパスを扱わない。
- ファイル名にパス区切り文字(
5. ブルートフォース攻撃(総当たり攻撃)#
ユーザーIDとパスワードの組み合わせを順番にすべて試して認証を突破する攻撃。
- ✅ 対策: 一定回数失敗したらアカウントをロックする、または レートリミット(一定時間の試行数制限) を設ける。
カテゴリー2:認証・認可とトークン管理#
「誰がアクセスしているのか」を確認し、「何ができるか」を制御するための技術用語です。
6. セッションハイジャック#
他人のセッションIDを何らかの手段(パケット盗聴、XSS等)で盗み取り、本人になりすますこと。
7. セッション固定攻撃(Session Fixation)#
攻撃者が事前に用意したセッションIDを被害者に使わせ、後からそのIDを使ってログイン状態を奪う攻撃。
- ✅ 対策: ログイン成功後にセッションIDを再発行(Regenerate)する。
8. OAuth 2.0#
権限の「認可(Authorization)」を委譲するためのプロトコル。Googleログイン等で「プロフィール情報の読み取りを許可する」といった際に使われます。
9. OpenID Connect (OIDC)#
OAuth 2.0の上に構築された、ユーザーの「認証(Authentication)」を行うためのレイヤー。
10. JWT (JSON Web Token)#
認証情報をJSON形式で保持する署名付きトークン。サーバー側に状態を持たなくて済む(ステートレス)ため、SPAやマイクロサービスでよく使われます。
カテゴリー3:ブラウザ・プロトコルの防衛策#
ブラウザの設定や通信プロトコルを活用した多層防御の仕組みです。
11. HttpOnly属性#
JavaScript(document.cookie)からCookieにアクセスできないようにする設定。XSSによるCookie奪取を防止します。
12. Secure属性#
CookieをHTTPS通信のときだけ送信するように制限する設定。Wi-Fi盗聴などによる漏洩を防ぎます。
13. SameSite属性#
別ドメインからのリクエストにCookieを含めるかどうかを制御。CSRF対策のデファクトスタンダードです。
14. CSP (Content Security Policy)#
どのドメインからのスクリプト実行を許可するかをブラウザに指示するレスポンスヘッダー。XSS被害を劇的に抑えられます。
15. HSTS (Strict-Transport-Security)#
「今後1年間は常にHTTPSでアクセスせよ」とブラウザに命令し、HTTPでのアクセスを遮断する仕組み。
16. セキュリティヘッダー(X-Content-Type-Optionsなど)#
ブラウザの「推測(Sniffing)」による脆弱性を防ぐためのヘッダー群。
カテゴリー4:運用、暗号化、その他重要用語#
実装後の運用やデータの保存に関わる用語です。
17. ハッシュ化(パスワード保存)#
パスワードをそのまま保存せず、不可逆な計算値に変換すること。万が一DBが流出しても、元のパスワードが分からないようにします。
18. ソルト (Salt)#
ハッシュ化の前に、ランダムな文字列(塩)をパスワードに付け加えること。同じパスワードでもユーザーごとにハッシュ値を変え、「レインボーテーブル」による解読を防ぎます。
19. 機密情報管理 (Secrets Management)#
APIキーやDBのパスワードをソースコードに書かず、環境変数や専用の管理ツール(AWS Secrets Managerなど)で安全に管理すること。
20. 脆弱性診断(セキュリティスキャン)#
自動ツールや手動でシステムの欠陥を洗い出すテスト。
21. ペネトレーションテスト(侵入テスト)#
ホワイトハッカーが実際に攻撃を仕掛けて、「どこまで侵入可能か」を実行して確認する実践テスト。
22. WAF (Web Application Firewall)#
通信の内容をリアルタイムで検査し、SQLiやXSSを検知して遮断する盾。
23. DoS / DDoS攻撃#
大量のリクエストを送りつけ、サーバーを過負荷にして停止させる攻撃。
24. レートリミット#
APIなどの利用回数を制限し、DoS攻撃や不正なクローリングを防止。
25. OWASP Top 10#
世界的に注意すべきWebアプリケーションの重大なリスクをまとめたプロジェクト。エンジニアの必読指標です。
26. ゼロデイ脆弱性#
修正パッチが提供される前に発見された脆弱性への攻撃。
27. RCE(リモートコード実行)#
攻撃者がリモートから任意のプログラムを実行できる、最も致命的な脆弱性の一つ。
28. クリックジャッキング#
透明なボタンなどを重ねて配置し、ユーザーを騙してクリックさせる攻撃。
29. OSコマンド注入#
OSのコマンドを呼び出す関数の引数に細工を施し、予期しないシステムコマンドを実行させる攻撃。
30. ソーシャルエンジニアリング#
技術ではなく、心理的な隙を突いたり偽装をしたりして情報を盗むこと(フィッシング等)。
まとめ:エンジニアとして持つべき「守り」の意識#
セキュリティの世界は広大ですが、エンジニアが日々の業務で守るべき「3つの絶対原則」があります。
- あらゆる外部入力を信用しない: バリデーションとエスケープを徹底する。
- 多層防御で備える: アプリケーション、ブラウザ、インフラの各段階で対策を重ねる。
- 既知の情報を追い続ける: 依存関係(npm/Go modules)のアップデートを怠らない。
最初は「用語が多くて難しい」と感じるかもしれませんが、まずは代表的な XSS, SQLi, CSRF の仕組みを深く理解することから始めてみてください。それだけで、コードの安全性が劇的に向上するはずです。











