前回までは,主にクロスサイト・スクリプティングのぜい弱性とその対策について解説してきた。最終回となる今回は,クロスサイト・スクリプティング以外の「インジェクション系」ぜい弱性について解説する。具体的には,SQLインジェクション,OSコマンド・インジェクション,HTTPヘッダー・インジェクション,そしてメールの第三者中継である。 SQLインジェクション対策にはバインド変数の利用が最適 まず,SQLインジェクションから見ていこう。対策には二つの方法がある。一つは,SQLの「バインド変数(注1)」を使う方法である。バインド変数の書式はプログラミング言語によって異なるが,一例として,Perlを使った場合に,パスワード認証のSQLをバインド変数で書き換えた例を示す(図1)。 (注1) 「準備された文(Prepared Statement)」というのがJIS SQLでの用語だがあまり普及していない。バ
サブクエリによって引き起こされるSQLインジェクションの被害 星野君 「へぇ~……」 星野君は、「なるほど」と感心した。しかし、少し考えた後で「これを悪用できるのだろうか?」という疑問がわいた。 星野君 「けど、結局のところ、メールアドレスが判別できるっていうだけの被害じゃないですか?条件文を追加したら登録情報が全件見えちゃった、とかいうわけでもないですし……」 赤坂さん 「えー。SQLインジェクションの被害って、そんな単純なのじゃないよ。この状態で、データベースの中の情報抜けちゃうって」 星野君 「え?マジっすか??」 赤坂さん 「例えば最初に、テーブル名の1文字目を判別する条件式を付けて……」 前述のように、追加するSQL文が「' and '1' = '1」などのような単純なものの場合は特に問題にならない。しかし、この条件文にはサブクエリのような複雑なものを入れることが可能なのである(
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く