具体的な攻撃例と対策方法2019年11月20日SQLインジェクションって言葉をよく聞きますが、どういうモノなんですか?Webサイトの脆弱性を狙ったサイバー攻撃の一種だよ。データベースに命令するSQL文を不正操作して、データベースに保存されている個人情報などを盗み取る攻撃ですよね。本記事ではSQLインジェクションの具体的な攻撃例や被害例、対策などを分かりやすく説明していきます。Firewall)の導入SQLインジェクションとはSQLインジェクションとは、入力フォームから入力した「SQL文を含む文字列」で、アプリケーションが想定しないSQL文を実行させることにより、データベースを不正操作するサイバー攻撃の一種です。上記は、SQLインジェクションのイメージ図です。SQLインジェクション対策をしていないWebサイトに対し、悪意のある攻撃者が「SQL文を含む文字列」で検索や登録を行います。その結果、アプリケーション側が想定していない「悪意のある攻撃者」のよる不正操作されたSQL文を実行してしまうのです。「SQL文を含む文字列」って具体的にどういうモノなんですか?攻撃方法は様々なんだ。それでは具体的な攻撃例の一部を紹介するよ。不正ログインよくあるログイン画面です。「ID」と「パスワード」が一致しなければログインすることができません。「SQLインジェクション対策」をしていないと、「ID」と「パスワード」を知らなくてもログインできてしまう可能性があるのです。その攻撃方法とは「ID」に以下の文字列を入力してログインするだけです。※パスワードには何もいれなくて平気です。'1';--これだけでログインできるの?前提として以下のSQL文が利用されているとします。このSQL文で画面から入力された「ID」と「パスワード」がデータベースに存在するか確認し、存在すればログイン成功、存在しなければログイン失敗と判断します。pass='入力されたパスワード';このSQL文に先ほどの「ID」と「パスワード」を当てはめると、以下のようなSQL文が作られます。1"という条件になっているので、結果は必ずtrueです。」はコメントアウトを表します。pass='';」はコメントとして扱われ無視されます。今回は「名前」と「メールアドレス」を登録する画面があるとします。各項目に以下を入力し登録。おわり住所:aaa@co.jp前提として以下のINSERT文が利用されているとします。このSQL文で画面から入力された「名前」と「メールアドレス」が「users」テーブルに登録されます。('入力された名前','入力されたメールアドレス')また他人のパスワードを管理している「user_password」テーブルを用意します。このデータを「SQLインジェクション」の攻撃で盗み取ることを目的とします。※通常パスワードは「ハッシュ化」してDBに格納するのが一般的ですが、ここではあえて平文で登録しています。passwordINSERT文に画面から入力された「名前」と「メールアドレス」を当てはめると、以下のようなSQL文が作られます。画面から入力された「山田太郎」が登録される。0,1」という文字列が入っています。1」の条件と一致する「user_password」を取得するサブクエリです。「password」が登録されます。おわり','aaa@co.jp')」という文字列。」から後ろはコメントアウトという意味です。結果、実際に実行されたINSERT文(コメントアウト部分を除く)は、以下と同じです。0,1))そして、登録内容を閲覧する画面で登録データを見ると、メールアドレスの所に「password」が表示され、他人の個人情報を奪い取る事に成功しています。サブクエリを使えば、簡単に他のテーブルからデータを取得することが出来るんですね・・・。データ改ざん商品の検索画面などの入力フォームです。今回は「商品名」で検索する画面があるとします。「商品名」を完全一致で検索するSQL文を利用します。'入力された商品名';ここで商品名に以下を入力して検索。'ASELECT文に画面から入力された「商品名」を当てはめると、以下のようなSQL文が作られます。'A'」の2つのSQL文が作られました。セミコロン「;」を使うことでSQLを複数のSQL文を連結させることができるからです。結果、「item_info」テーブルの全データが削除されてしまいました。このようにセミコロン「;」を使うことで、データベースのデータを「改ざん」することが出来ます。ソニーグループに対する「SQLインジェクション」による攻撃が発覚し、個人情報が流出した可能性があることを発表。流出した個人情報は氏名、住所、Eメールアドレス、生年月日、PlayStation®Network/QriocityTMパスワード、PlayStation®NetworkオンラインID。JAPAN」「MagDeli」で最大13万1936件分の顧客情報が流出。流出情報の大半は会員のメールアドレスやIDだが、約30件のクレジットカード情報も同時に流出した可能性があることを発表。株式会社釣りビジョンがSQLインジェクション」による攻撃を受け個人情報が流出した疑いがあることを発表。個人情報を狙った攻撃が多いですね。個人情報の流出を防ぐためにも「SQLインジェクション対策」は非常に重要なんだ。SQL文の組み立ては「プレースホルダ」で実装するSQLインジェクションの一般的な対策方法は「プレースホルダ」を使いSQL文を組み立てることです。プレースホルダによる組み立てとは、パラメータ部分を「?」などの記号で示しておき、後から実際の値を機械的な処理で割り当てる方法。おける「プレースホルダ」による組み立ての例です。address);パラメータを「プレースホルダ」で指定することで、入力された文字列は「ただの文字列」と判断されSQLインジェクションによる攻撃を防ぐことができます。リテラルなどがあります。文の組み立てを文字列連結により行う場合は、リテラル内で特別な意味を持つ記号文字をエスケープ処理します。(たとえば、「'」→「''」、「\」→「\\」等)特殊な意味を持つ記号文字をエスケープすることで、SQLインジェクションによる攻撃を防ぐことができます。Firewall)とは、Webアプリケーションの脆弱性を突いた攻撃からWebアプリケーションを保護するセキュリティ対策の一つです。このWAFを利用するのも、有効なSQLインジェクション対策となります。コメントをキャンセルメールアドレスが公開されることはありません。ハードウェアとは、コンピュータ関連の機械のことをいいます。AFFINGER5.。