【SQLインジェクション】INSERT文への攻撃例2019年11月5日INSERT文に「SQLインジェクション攻撃」ってどうやるんですか?良い質問だね。本記事では「SQLインジェクション」の対策をしていないと、どのような被害に遭うのか具体的なINSERT文への攻撃例を紹介していきます。INSERT文への「SQLインジェクション」攻撃の解説INSERT文への「SQLインジェクション」攻撃例INSERT文への簡単な攻撃例を紹介します。ある登録画面に以下の文字列を入力して「登録」します。次に登録内容を画面に表示させると、住所の所に登録していない値が表示されています。この「password01」というのは「SQLインジェクション」攻撃により情報漏洩したデータです。いう仕組みで情報漏洩に繋がったのか。具体的な攻撃方法を紹介していきます。スポンサーリンクSQLインジェクション攻撃を検証するための事前準備SQLインジェクション攻撃を検証するための、事前準備は以下の通りです。※Javaで簡易的なサーブレットで作成しています。データベース前提条件として以下の2つのテーブルがあるとします。CREATE文は以下の通り。(`id`));そして「user_password」テーブルには以下のデータを作成しておきます。※このデータを「SQLインジェクション」の攻撃で盗み取ることを目的とします。※通常パスワードは「ハッシュ化」してDBに格納するのが一般的ですが、ここではあえて平文で登録しています。入力し登録された結果を「登録完了画面」に表示する流れです。charset=UTF-8"><title>登録完了</title></head><body>以下の内容で登録されました。}}スポンサーリンクINSERT文への「SQLインジェクション」攻撃の解説ここから具体的にINSERT文への「SQLインジェクション」攻撃について解説していきます。登録画面で以下のデータを入力し登録します。終わり住所:任意の文字列(空でも平気)※画面例は空ユーザー情報TBL(users)へのINSERT文は以下です。+"')このINSERT文に画面から入力されたデータを代入すると以下となります。終わり','')まず「カラム:name」には「テスト名前」が登録されます。0,1)」という文字列が入っています。1」の条件と一致する「user_password」を取得するサブクエリです。その結果、「カラム:address」には「password01」が登録されます。終わり','')」という文字列。」から後ろはコメントアウトという意味です。結果、実際に実行されたINSERT文(コメントアウト部分を除く)は、以下と同じです。0,1))そして、登録内容を閲覧する画面で登録データを見ると、住所の所に「password01」が表示される流れです。これで、他人の個人情報(※今回の例はパスワード)を盗み取る事に成功。このように「テーブル名」や「カラム名」が分かっていれば「サブクエリ」を使い簡単に個人情報を盗み取る事が可能であり、深刻な被害にあう危険性があるのです。SQLインジェクションの対策は大切なんですね。コメントをキャンセルメールアドレスが公開されることはありません。私も2度目で無事合格しました。(実際は試験受けずに諦めたこと過去2度、そう考えると4度目の挑戦です。AFFINGER5.。