Closed6

[SQLインジェクション] [実例] 防衛省ワクチン予約システム

tuzzotuzzo

SQLインジェクション脆弱性が含まれていると、データベースの内容を書き換えられるなど実害が出ると思うが、実際にはどのようなことが起きるのか?
実際に現実世界で起きた実例をまとめて、SQLインジェクションに対する理解を深める。

tuzzotuzzo

SQLインジェクションを防ぐためには?

  • フレームワーク側に脆弱性がある場合があるので、フレームワークのバージョンアップを徹底
    例えば、CakePHPの場合は、厳密にはフレームワークというよりもPHPライブラリのPDOのアップデートが大事。(アップデートに神経質になる必要はなさそう。SQLの構文が変わるみたいなことがあれば、ライブラリなどアップデートするので、そのタイミングを逃さないようにすれば良さそう。)


コード作成の際に人為的ミスで発生する脆弱性は具体的にどうすれば?
(特に何に注意すれば良いのかな?)

  • 特定の文字はエスケープさせる(ホワイトリスト形式はだめ、人間では管理しきれない。ですのでライブラリを使う。)
  • フレームワークを用いての開発で生のSQLを使わずにORMを使う


今回は、プレースホルダーまわりの可能性がある
https://twitter.com/fagai/status/1394535973984165893
https://qiita.com/ArmadaSuit/items/607b0cff8ee6d1be3dd5

PHPでSQLインジェクション攻撃の対策方法【PDO】参考記事
https://qiita.com/kurodenwa/items/8807e79515c0e2b4dad9
https://kinocolog.com/php_sql_injection/

tuzzotuzzo

補足

  • 短納期(多分3ヶ月とか)で発注受けて仕様も決まりきらないうちに「接種の予約だけができる」という要件を「必要最低限の機能で」リリースした可能性がある。
  • 脆弱性を正規ルートで報告せずに、記事で拡散してしまっている背景がある。
このスクラップは2021/12/30にクローズされました