Web脆弱性とは? 代表的な攻撃と対策をわかりやすく解説
目次
こんにちは、堀部です。
脆弱性とは、コンピュータのOSやソフトウェアにおいて、プログラムの不具合や設計上のミスが原因となって発生した情報セキュリティ上の欠陥のことを言います。この欠陥に対して対策がされていないと、悪意のある攻撃者によってさまざまなリスクが発生します。
- ネットワークへの侵入
- データの盗聴
- マルウェア感染
- 情報の改ざん
システム開発者は、このようなリスクから被害を最小限に抑えるために、効果的な対策を行っていく必要があります。今回はWebサイトでの脆弱性をいくつかご紹介したいと思います。
SQLインジェクションとは? 原因・影響・対策
データベースを使ったWebシステムで、悪意を持って入力された値にSQL文が含まれていると、入力値がSQL構文の一部と解釈され、データベースに対して不正な操作を実行してしまいます。
想定される影響
- 情報の漏洩
- データの改ざん・削除
- 管理者権限の奪取
原因
SQL文を文字列連結で生成し、入力値の検証や無害化を行っていない点にあります。特に ‘ や ; などの特殊文字を利用されることで、意図しないSQLが実行される可能性があります。
対策
- プレースホルダを使ったSQLのパラメータバインド
- O/Rマッパー(ORM)などのライブラリ活用
- ユーザー入力値のバリデーション強化
クロスサイト・スクリプティング(XSS)とは? 仕組みと対策
攻撃者がWebページに悪意のあるスクリプトを仕込むことで、ページを閲覧したユーザーに対して不正な操作や情報の搾取が行われます。
想定される影響
- クッキーの盗難
- フィッシング詐欺
- マルウェアの配布
原因
出力時のエスケープ処理が不十分なため、スクリプトがそのままブラウザ上で実行されてしまうことにあります。
対策
- 出力時のHTMLエスケープ(サニタイジング処理)
- 入力値のフィルタリング
- コンテンツセキュリティポリシー(CSP)の導入
クロスサイト・リクエスト・フォージェリ(CSRF)とは? 攻撃例と対策
攻撃者が用意した偽サイトをユーザーが開いた際、ログイン状態を利用して第三者のリクエストが実行されてしまう脆弱性です。
想定される影響
- ユーザーの意図しない操作(情報更新・削除など)
- アカウントの乗っ取り
原因
ユーザーがログイン中のWebアプリケーションに対して、第三者が意図しないリクエストを送信できてしまうことにあります。
対策
- CSRFトークン(ワンタイムトークン)の埋め込みと検証
- RefererチェックやSameSite属性の活用
- GETリクエストで副作用のある処理を避ける
ディレクトリ・トラバーサルとは? 発生原因と防止策
リンクのパラメータでファイル名を直接指定していると、攻撃者が「../」などを使って意図しないファイルにアクセスする可能性があります。
想定される影響
- サーバー内のファイルの不正閲覧
- 機密情報の漏洩
原因
ユーザーが指定したファイル名やパスを、検証・制限なしにサーバー側でそのまま使用してしまうことにあります。
対策
- ファイル名の直接指定を避け、IDなどで管理
- basename() を使ってファイル名を制限
- アクセス可能なパスをホワイトリスト化
セッション管理の不備による脆弱性と対策
セッション管理が不適切な場合、第三者によるなりすましやセッションハイジャックのリスクが高まります。
想定される影響
- なりすましログイン
- アカウントの不正利用
- 機密情報の漏洩
原因
- セッションIDの予測可能性
- HTTPS未使用でセッションIDが盗まれる
- ログアウト時にセッションが破棄されない
対策
- セッションIDの十分なランダム性を確保
- 常時HTTPS通信の実施
- ログインやログアウト時のセッション破棄
- セッションタイムアウトの適切な設定
まとめ
Webサイトを安全に運用していくには、こうした脆弱性への理解と、それに対する適切な対策が不可欠です。一つ一つの対策は地味に見えるかもしれませんが、それらが積み重なることでシステムの安全性が確保されます。
開発者としては、脆弱性情報を常にキャッチアップし、フレームワークやライブラリのセキュリティアップデートも欠かさず行う姿勢が求められます。セキュリティは「一度やって終わり」ではなく、「継続して守る」ことが大切です。
《関連記事》


