情報処理のWeb教科書―IPA情報処理試験対策のお供に!
トップ 情報処理の知識体系 テクノロジ系 技術要素 セキュリティ 情報セキュリティとは 攻撃手法 サイバー攻撃の種類 SQLインジェクション
SQLインジェクションは、アプリケーションのSQL文生成処理の不備を突いたサイバー攻撃です。SQLインジェクションのメカニズム、攻撃例、対策、IPA情報処理試験の問題など、サイバー攻撃の種類の一つSQLインジェクションについての情報をまとめています。
この記事の目次です。
4. SQLインジェクションに関連したIPA情報処理試験の過去問題
SQLインジェクションとは、Webページ上の入力フォームなどパラメータとして送信される文字列から生成されたSQL文を不正なものにするようにパラメータを変更して、 Webアプリケーションを誤動作させたり、データベースの内容を不正に閲覧したりするサイバー攻撃のことをいいます。
SQLとは、簡単に言うと「リレーショナルデータベースを管理するソフトと話すための言語」です。
SQLインジェクションを利用したサイバー攻撃の主な目的は以下になります。
SQLインジェクションは、たとえば、Webアプリケーションの入力データとしてデータベースへの命令文を構成するデータを入力し、想定外のSQL文を実行します。 SQLインジェクションの攻撃例についてまとめていきます。
以下は掲示板などのコメント投稿処理の例になります。
まずは、正常な処理を見ていきます。
正常な入力値の場合、アプリケーションで組み立てたSQL文は以下になります。
#ASPの例 objCon.Open strSQL = "INSERT INTO board (USERID, TITLE, MESSAGE) VALUES ('太郎', 'コメント', 'コメントです。');" objRS.Open strSQL, objCon, 3
#ASPの例 objCon.Open strSQL = "INSERT INTO board (USERID, TITLE, MESSAGE) VALUES (" _ "'太郎', 'コメント', 'SQLインジェクションの例です。');delete from `board`;--以降のSQL文無効化のためコメントアウト');" objRS.Open strSQL, objCon, 3
SQL文が不正にかえられ、しかもテーブルのデータが消されてしまいます。
SQLインジェクションの原因、対策についてまとめていきます。
SQLを実行するアプリケーションで、SQL文のリテラル部分の生成処理のチェック不備が原因です。
フォームや入力値、GETやPOSTなどの入力値を使用して、実行するSQL文に組み立てる際に入力値に害のあるコードが含まれていないか十分にチェックされないことが原因になります。
対策方法はいくつかあります。複数合わせて多層防衛するのが望ましいです。
SQLインジェクション攻撃を防ぐ方法は、SQLとして解釈されないように文字列をチェックします。
対策としては、以下のような方法があります。
入力された文字列が、データベースへの問合せや操作において、特別な意味を持つ文字として解釈されないようにします。
対策としては、以下のような方法があります。
上述の攻撃例の場合、対策により、プレースホルダによりSQL文が変更される文字を事前に検出、もし変更されてもDELETE文のような文は権限が無く実行できなくなります。
以下ではSQLインジェクションに関連したIPA情報処理試験の過去問とその解説をまとめています。
情報システムへの外部からの不正な行為や手法など、サイバー攻撃の種類と対策方法についてまとめています。
情報セキュリティとは何か、情報セキュリティのテキストコンテンツをテーマに知識をまとめています。またIPAの情報処理試験の情報セキュリティ関連の問題も解説しています。
情報処理試験対策用のサイトオリジナル教科書をテーマにテクノロジ系の知識をまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…