1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【第4章】よくある脆弱性①:XSSとSQLインジェクションをやさしく解説💥🛡️

Posted at

こんにちは、守山しずくです🌸
今回は、ハッキングの世界でよく登場する 「XSS」と「SQLインジェクション」 という2つの有名な脆弱性について解説していきます!


🧨 XSS(クロスサイト・スクリプティング)とは?

XSSとは、Webページに悪意ある スクリプト(JavaScriptなど)を混入させる攻撃 のことです。

例:

掲示板に以下のような投稿をしたとします。

<script>alert("あなたのクッキー見てるよ!");</script>

この投稿がそのまま表示されてしまうと、
見るだけでJavaScriptが実行され、 ユーザーの情報が盗まれる などの被害が発生します😱

主な影響:

  • Cookieの盗難
  • フォーム内容の不正送信
  • 偽のログイン画面でパスワードを抜き取る など

原因:

  • 入力値のサニタイズ(無害化)をしていない
  • HTMLにユーザー入力をそのまま埋め込んでいる

🛡️ XSS対策の基本

  1. 出力時にエスケープ処理をすること
    • 「<」や「>」などの記号をそのまま出さない
  2. HTMLに直接ユーザー入力を出力しない
  3. 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インジェクション対策の基本

  1. プレースホルダ(バインド)を使う
    • 直接文字列を結合しないこと
  2. ユーザー入力をサニタイズする
  3. エラーメッセージを詳細に表示しない
    • 内部構造を推測されないようにするため

✅ まとめ

  • XSSは、Webページ上で スクリプトを実行させる攻撃
  • SQLインジェクションは、 データベース操作を乗っ取る攻撃
  • どちらも「入力値のチェック」が最大の防御!

次回は、 「第5章:よくある脆弱性②:CSRF / LFI」 をお届けします。
攻撃者が“あなたになりすます”方法、気になりませんか?🌸


💬 フォローしてくれたら、怖くないセキュリティの世界を毎日お届けします♪

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?