[ホーム] > [サイバー攻撃大辞典 トップ] > [SQLインジェクション]


作成日:2020/09/18

SQLインジェクション

SQLインジェクションの説明


SQLインジェクションとはSQLデータベースの不備を攻撃する手法の一つ。
クライアント側で入力したパラメータによりサーバ側でSQL文を作成して実行する仕組みの場合、クライアント側から(サーバ側では)想定外のSQL文を作成しサーバ側で実行する。
主に Webアプリケーションで入力チェックが甘いデータベースアプリケーションが標的となる。



攻撃例


例としてパスワード入力フォーム (passfield$とする) に対して

where password='passfield$';

をサーバ側で組み立てているとする。

クライアントからパスワード入力フォームに「'or'A'='A」 を入力することにより

where password=''or'A'='A';

となり、すべての条件が当てはまることとなる。(パスワードが空からあるいは A=A の場合となり、100%該当する)
よってSQLサーバ側は意図しない結果(すべての結果)を返すこととなる。


対策


・パラメータによりSQL文を組み立てる方式は使用せず、プレイスホルダ方式/バインド方式を使用する。
・DB接続時に文字エンコーディングを指定する。(文字化けや文字変換による脆弱性の可能性を排除)
・SQL文をクライアント側(ブラウザ側)で組み立てる方式は厳禁。
・SQLエラーが発生してもエラー内容やエラーコードをクライアントに表示しない。(攻撃者に対してSQLインジェクションコード作成のヒントになる)


関連記事

関連記事

IPA によるSQLインジェクションの仕組み及び対策に関する文書。
http://www.ipa.go.jp/files/000024396.pdf






[ホーム] > [サイバー攻撃大辞典 トップ] > [SQLインジェクション]


本サイト内掲載されている情報は、誰もその正当性は保証しません。独自の調査により判明した事項を記載しており、内容に誤りがある可能性があります。
内容により発生したいかなる損害は誰も補償しません。自己責任で参考として閲覧してください。
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) securitychecklist.net 2015 - 2020