
Webの脆弱性入門|SQLインジェクション・XSSのしくみ
2026-08-16 ・ 実践
Webサービスを作る・使う人が知っておきたい、代表的なWebの脆弱性。攻撃のしくみが分かれば、防ぎ方も見えてきます。
代表的な3つ
攻撃
- SQLインジェクション
- XSS(クロスサイトスクリプティング)
- CSRF
ざっくり何をする?
- 入力欄からDBに不正命令を注入
- ページに悪意のスクリプトを埋め込む
- ログイン中の利用者に意図しない操作をさせる
SQLインジェクションのイメージ
ログイン欄に、パスワードのつもりでデータベースへの命令を紛れ込ませる攻撃です。入力をそのままDBに渡すと、「全員のデータを見せろ」といった命令が実行されてしまうことも。
根っこは「入力を信用しすぎ」
多くのWeb脆弱性は「利用者の入力をそのまま使ってしまう」ことが原因。ユーザーの入力は常に疑うのが鉄則です。
開発者の基本対策
入力チェック
想定外の入力を弾く
エスケープ
特殊文字を無害化
安全な部品
プレースホルダ・ORM・フレームワーク
自前で頑張るより、実績あるフレームワークの安全機能を使うのが確実。加えて更新で既知の穴をふさぎます。
もう少し詳しく(背景と理論)
Webの脆弱性を体系的に学ぶ出発点が OWASP Top 10 です。世界中の実データを基に、影響の大きいWebアプリの脆弱性カテゴリを数年ごとに更新して公開しています1。2021年版では、アクセス制御の不備(Broken Access Control)が最上位に上がり、インジェクションや認証の不備、設定ミスなどが並びます。個々の脆弱性は CWE(Common Weakness Enumeration) で分類され、実際に見つかった脆弱性は CVE として採番・公開されます2。重要なのは、どれも「入力を信用しない」「最小権限」「多層防御」「安全なデフォルト」という共通原則の適用で大半が防げること3。個別の対策を暗記するより、この原則を身につける方が応用が効きます。