Webアプリケーションのセキュリティを取り巻く環境は大きく変化してきている。攻撃は複雑さを増し、複数の脆弱性を利用する攻撃も増えている。しかし、基本を理解せずに個別の脆弱性について対応しても、表面的な対策となってしまう。本連載では、Webアプリケーションのセキュリティにおいて理解しておく必要のある基本技術について解説を行う。
クウはベンチャー企業で働くWebアプリケーションのエンジニア。でもそこは小さなベンチャー企業、セキュリティのことは分かっていながらも、動くものを納品するので精いっぱい……。今日は納品のため、客先でミーティングに参加していた。そしてお客様から受けた指摘は、こんな一言だった。
お客さん 「……で、このWebアプリケーション、セキュリティは大丈夫なんだよね?」
クウ 「は、はいっ! もちろんです!」
お客さん 「じゃあ、これからもよろしく頼むよ」
クウ、ユウヤ 「よろしくお願いしますっ!」
無事、お客さんとのミーティングを終えたクウとユウヤの2人は、近くの喫茶店で一息いれることにした。
クウ 「最近はセキュリティのことを聞かれることがかなり増えてきましたねぇ」
ユウヤ 「ああ、そうだね。営業の段階から『セキュリティはどう担保されているんだ?』なーんてことをいわれちゃうようになってきたね」
クウ 「うちみたいに小さい会社だと正直ちょっと手が回らなくて厳しいですよね……」
ユウヤ 「『セキュリティ』なんていわれても複雑だからなぁ」
クウ 「ですよね。どこから手を付けていいのか分からないですよ」
ユウヤ 「なんかこれを押さえておけば大丈夫! っていう基本みたいなものってないものかねぇ」
クウ 「基本、かぁ……」
時間も遅くなっていたので、クウはユウヤと別れ、家路についた。Webアプリケーションの開発をしているクウにとって、セキュリティは日を追うごとに重要度が増している。しかし、日々の業務をこなすだけで精いっぱいで、そこまで手が回っていないというのが現状だ。
クウ (そろそろちゃんとWebアプリのセキュリティを考えないといけないよなぁ)
それでもクウはセキュリティには気を使って情報収集をしており、クロスサイトスクリプティング(XSS)やSQLインジェクションなどの、Webアプリケーションにおける脆弱性でよく話題になるものに関してはある程度理解をしていた。しかし、どうしても一時しのぎな対策を取っている感は否めず、自らが作成したWebアプリケーションが“本当に安全である”かどうか、自信を持つことができなかった。
クウ (でも、Webアプリのセキュリティを考えるに当たって必要な知識って何だろう……)
クウは家に着くとPCを立ち上げ、あらためてWebアプリケーションのセキュリティについて調べてみた。しかし、個別の脆弱性への対策などはすぐに探すことができるが、クウの満足できるような情報はやはり見つけることができなかった。
クウ (Webアプリのセキュリティの基本っていっても、やっぱり個別の脆弱性情報を地道に調べていくしかないのかな)
クウ 「あ!珍しいな」
そのとき、ネットで知り合った友人のメッセンジャーがオンラインになった。
@IT messenger v1.20
クウ :珍しいですね。お久しぶりです。
ジュン :おお、久しぶり。やっと仕事が落ち着いてね〜。そっちは仕事どう?
ジュンとはWebアプリケーション開発関連のコミュニティで知り合ったのがきっかけで、時々メッセンジャーを通じて情報交換などをしている。彼はセキュリティに関しても詳しいようだったので、クウは少し聞いてみることにした。
@IT messenger v1.20
クウ ちょっといま困っていることがあるんですけど教えてもらってもいいですか?
ジュン いいよー。何?
クウ Webアプリのセキュリティについてなんですけど……。もう最近よく分かんなくなってきて><
ジュン ほぅ。
クウ Webアプリのセキュリティの基本、これ押さえればOK! みたいなのって、ないですかねぇ……。
ジュン んー。基本っていうと、やっぱり一番知名度高そうなところで、クロスサイトスクリプティングとか?
クウ やっぱりそこらへんになっちゃうんですかねぇ。
ジュン あれ、そーいうのじゃない?
クウ なんか、もっと基本的な考え方というか、知識というか、そういうところがないかなーと……。
ジュン ふむ……。それでいくと、HTTPとかを理解する、とかはどう?
クウ お! そういうレベルの話は考えたことがなかったかもしれないです。
ジュン じゃあ、それだな。
クウ けど、HTTPってブラウザのアドレスバーに入れるあれですよね?それ以上の何かってあるんですか?
ジュン ふふふ、そしたら教えてあげるよ。まず、「コマンドプロンプト」を立ち上げてみてー。
クウ コマンドプロンプトですか?? ブラウザじゃなくって?
Copyright © ITmedia, Inc. All Rights Reserved.