こんにちは、守山しずくです🌸
今回は、ハッキングの世界でよく登場する 「XSS」と「SQLインジェクション」 という2つの有名な脆弱性について解説していきます!
🧨 XSS(クロスサイト・スクリプティング)とは?
XSSとは、Webページに悪意ある スクリプト(JavaScriptなど)を混入させる攻撃 のことです。
例:
掲示板に以下のような投稿をしたとします。
<script>alert("あなたのクッキー見てるよ!");</script>
この投稿がそのまま表示されてしまうと、
見るだけでJavaScriptが実行され、 ユーザーの情報が盗まれる などの被害が発生します😱
主な影響:
- Cookieの盗難
- フォーム内容の不正送信
- 偽のログイン画面でパスワードを抜き取る など
原因:
- 入力値のサニタイズ(無害化)をしていない
- HTMLにユーザー入力をそのまま埋め込んでいる
🛡️ XSS対策の基本
-
出力時にエスケープ処理をすること
- 「<」や「>」などの記号をそのまま出さない
- HTMLに直接ユーザー入力を出力しない
-
Content Security Policy(CSP)を設定する
- 外部スクリプトの制限などが可能になります
🧨 SQLインジェクションとは?
SQLインジェクション(SQLi)は、 データベースに対するSQL文を外部から操作する攻撃 です。
例:
以下のようなコードがあったとします。
SELECT * FROM users WHERE name = 'ユーザー入力';
ここに ユーザー入力
として
' OR '1'='1
が入ると、SQLはこうなります👇
SELECT * FROM users WHERE name = '' OR '1'='1';
この結果、 全てのユーザー情報が取得されてしまう ことに…💥
主な影響:
- データベース内の情報が漏洩
- ユーザー認証の回避
- データの改ざんや削除 など
🛡️ SQLインジェクション対策の基本
-
プレースホルダ(バインド)を使う
- 直接文字列を結合しないこと
- ユーザー入力をサニタイズする
-
エラーメッセージを詳細に表示しない
- 内部構造を推測されないようにするため
✅ まとめ
- XSSは、Webページ上で スクリプトを実行させる攻撃
- SQLインジェクションは、 データベース操作を乗っ取る攻撃
- どちらも「入力値のチェック」が最大の防御!
次回は、 「第5章:よくある脆弱性②:CSRF / LFI」 をお届けします。
攻撃者が“あなたになりすます”方法、気になりませんか?🌸
💬 フォローしてくれたら、怖くないセキュリティの世界を毎日お届けします♪