トップ SQLインジェクションとは
SQLインジェクションは、アプリケーションのSQL文生成処理の不備を突いたサイバー攻撃です。SQLインジェクションとは何か、原因と攻撃例、攻撃目的、対策方法についてまとめています。
SQLインジェクションとは、Webページ上の入力フォームなどパラメータとして送信される文字列から生成されたSQL文を不正なものにするようにパラメータを変更して、 Webアプリケーションを誤動作させたり、データベースの内容を不正に閲覧したりするサイバー攻撃のことをいいます。
SQLとは、簡単に言うと「リレーショナルデータベースを管理するソフトと話すための言語」です。
リレーショナルデータベースを扱うデータベース管理ソフトにデータ関連の命令を行うための英文に近い言語です。初心者の方でもわかるように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文が変更される文字を事前に検出、もし変更されてもDELETE文のような文は権限が無く実行できなくなります。
このページの更新履歴です。
Copyright (C) 2015-2023 名科辞典. All Rights Reserved. Loarding…