Top > SQL Injection ※今後はSQLインジェクション | セキュリティゆいがどくそん SQLインジェクション不正なSQL文を注入して重要情報の取得や 検証ウェブアプリケーションのログイン画面において、以下のような実装(Java)がされているとします。 String userId="admin"; //フォーム[user_id]で入力したと想定 String passwd="hoge"; //フォーム[passwd]で入力したと想定 String sql = ""; sql += "SELECT * FROM m_user"; sql += " WHERE user='" + userId + "'"; sql += " and pswd='" + passwd + "'"; そして、このSQLの結果が1件でもデータベースから返ってきたらユーザ認証OK、という仕様だとします。 [' or 1=1--] すると、生成されるSQLは以下のようになります。 SELECT * FROM m_user WHERE user='' or 1=1--' and pswd='' RDBMS*1によりSQL文法に違いはありますが、[' or 1=1;--]といった文字列を埋め込むことで条件句を必ず真にすることが出来た場合、ユーザIDやパスワードを知らなくてもログイン後の画面に遷移することが可能となってしまいます。 対策IPA 独立行政法人 情報処理推進機構:安全なウェブサイトの作り方 もしくは、いわゆる「徳丸本 ブラインドSQLインジェクション
リテラル表現形式文字列(テキスト・リテラル、文字リテラルなど)
参考サイト
関連書籍 |