ウェブ・セキュリティ基礎試験(徳丸試験)の勉強 ⑧SQLインジェクション
こんばんわ!
世間では徳丸試験といわれている、ウェブ・セキュリティ基礎試験に挑戦しようということで、いつものごとくアウトプットで記事にまとめていきます。
今回は第八回目のSQLインジェクションについてまとめます。
SQLインジェクション
SQLインジェクションは、攻撃者がデータベースに対するSQLクエリを操作することで不正な操作を行う手法です。以下の影響が考えられます。
・データベース内の情報が外部から盗まれる
・データベース内の内容が書き換えられる
・認証回避
・ファイルの読み出し、書き出し、プログラムの実行
また、データベースエンジンによっては、SQLインジェクションの攻撃によって、以下の攻撃も可能になります。
・OSコマンドの実行
・HTTPリクエストにより他のサーバーを攻撃
データベース内の調査
データベースの表名と列名を調査するためには、information_schemaデータベースを使用します。
例えばすべてのテーブル名を表示する
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'データベース名';
対策
対策としては下記があります。
・プレースホルダによりSQL文を組み立てる
・リテラルを正しく構成し、SQLを変更されないようにする
・詳細なエラーメッセージの抑制
・入力値の妥当性検証
・データベースの権限設定
ここまでです。
読んでいただきありがとうございます