3.SQL Injection(エスキューエル インジェクション)

★パターン1:
 ◆攻撃内容
  ・攻撃者が不正なSQLをデータベースに実行させて、データを盗んだり改ざんする

 ◆攻撃例
  ・以下のようなコードに不正のGETパラメータ部分に、「1 OR 1 = 1」と入力された場合、条件が常に真になってしまう。
   mysql_query(“SELECT * FROM table WHERE id='”.$_GET[‘id’].”‘”, $conn);
  ・上記のようなコードの脆弱性を利用して、SELECT / DELETE / UPDATE等のあらゆるSQLを実行させる
  ・DBにファイル書き出し権限が与えられている際に、それを利用した攻撃(悪意のあるPHPスクリプト作成など)

 ◆攻撃結果
  ・データベースに保存されているパスワードの漏洩 / 内容の改ざん
  ・不正スクリプトを実行させられた事による被害

 ◆対策方法
  ・バリデート
   上記「$_GET[‘id’]」は数値が入ることが想定されているので、予めPHPで「intval()」による代入値のチェックを行う

  ・クエリ文生成時エスケープ
   「addslashes()、mysql_real_escape_string()、pg_escape_string()」等を利用して、実行するSQLの文字エスケープを行う

コメント

タイトルとURLをコピーしました