ホーム › エンジニアコラム › 初心者が押さえるWebセキュリティの基礎
SECURITY COLUMN

初心者が押さえるWebセキュリティの基礎

動くものを作れるようになったら、次に意識したいのがセキュリティです。代表的な攻撃の仕組みを知っておくだけで、危険なコードを書くリスクは大きく減ります。まず押さえたい3つの脅威と対策を解説します。

📅 2026-07-18✍ progo編集部

なぜ初心者こそセキュリティを知るべきか

脆弱性の多くは「知らずに危険な書き方をしてしまう」ことが原因です。攻撃の仕組みを一度知っておくだけで、無防備なコードを避けられます。ここでは特に頻出の3つを紹介します。

1. XSS(クロスサイトスクリプティング)

ユーザーの入力をそのままページに表示すると、悪意ある<script>を埋め込まれ、他の利用者のブラウザで実行されてしまう攻撃です。

対策

ユーザー入力を表示するときは必ずエスケープ(<→&lt;等に変換)します。多くのテンプレートエンジンは標準でエスケープしてくれるので、「生のまま出力」する機能をむやみに使わないことが基本です。

2. SQLインジェクション

入力値をそのままSQL文に連結すると、DBを不正操作される攻撃です。

// ❌ 危険:入力を直接連結
"SELECT * FROM users WHERE name = '" + input + "'"

対策

プレースホルダ(プリペアドステートメント)を使い、値を安全に埋め込みます。

// ✅ 安全(例: PHP PDO)
$stmt = $pdo->prepare("SELECT * FROM users WHERE name = ?");
$stmt->execute([$input]);

3. CSRF(クロスサイトリクエストフォージェリ)

ログイン中のユーザーに、意図しないリクエスト(退会・送金など)を勝手に送らせる攻撃です。

対策

フォームにCSRFトークンという秘密の合言葉を仕込み、正規の画面から送られたリクエストかを検証します。主要フレームワークは標準機能を備えています。

共通して大切な考え方

まとめ

セキュリティは「特別な人がやること」ではなく、すべての開発者の基礎教養です。まずは XSS・SQLインジェクション・CSRF の3つと「入力を信用しない」原則を頭に入れることから始めましょう。