Hello there, ('ω')ノ
SQLインジェクションとは?
SQLインジェクションとは:
- 入力値を悪用して
- データベースに対して意図しない命令を実行させる攻撃
たとえば「社員名を検索」する欄に悪意ある入力をすると、本来見えない社員情報まで取得できてしまう、という状態です。
よく発生する場所
- ログインフォーム
- 検索機能
- データ一覧ページ
- URLパラメーターにidやnameが含まれる場合
基本的なテスト文字列例
まずは入力欄やURLパラメーターに以下を試してみます:
- '(シングルクォート)
- ' OR '1'='1
- " OR "1"="1
- admin' --
- %27(URLエンコード版)
✅ 反応がある場合:
- 画面が真っ白になる
- SQLエラーらしきメッセージが出る 例:You have an error in your SQL syntax
実際のチェック手順① URLパラメーターで確認
- ブラウザで対象ページを開く
- URL内のidやsearchパラメーターを次のように変更:
例:
https://intra.example.co.jp/user?id=1 → https://intra.example.co.jp/user?id=1'
- ページの反応を確認
✅ 正常:エラーが表示されず通常動作 ✅ 異常:エラーメッセージや予期しない動作
実際のチェック手順② フォーム入力で確認
- ログイン画面
- 検索画面
- お問い合わせフォーム
これらの入力欄に ' OR '1'='1 などを入力して、結果がどうなるか観察します。
チェックリストまとめ
- [ ] URLパラメーターにシングルクォートを入れて確認したか?
- [ ] フォーム入力欄でSQLi用文字列を試したか?
- [ ] エラーメッセージや挙動がおかしくならないか確認したか?
- [ ] ログインフォームでも同様に試したか?
注意事項
- 本番環境では必ず事前許可を取ること
- ログやデータに影響が出る場合があるので慎重に
- 本番環境よりテスト環境での実施を推奨
まとめ
- SQLインジェクションは今も現役の脆弱性
- URLやフォームの入力値を書き換えるだけで簡単に発見できる
- シングルクォート+エラー確認が基本的な流れ
Best regards, (^^ゞ