|
||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||
| CSRF(クロスサイトリクエストフォージェリ)の脆弱性への対処 | ||||||||||||
|
前項のように「正しいプログラミング」で大抵の脆弱性は回避できますが、それだけでは回避できないものもあります。その代表的なものがCSRF(クロスサイトリクエストフォージェリ)脆弱性です。 CSRFの脆弱性も最近はよく話題になっていますので、詳しい方もいらっしゃるかもしれませんが、まずはこれがどんな脆弱性なのかを説明しましょう。 図4は会員が自分のパスワードを変更する時の処理のフローです。Webアプリケーションは通常このような画面遷移をします。ここでは、完了画面に遷移したタイミングで、実際に管理されているDB上のパスワードが変更されます。 Webアプリケーションにおいては、セッションによりログインしているユーザを管理しているので、自分以外のユーザのパスワードを書き換えたりすることはできません。これは正しいプログラミングでセッションを管理していれば、第三者はあなたの「パスワード変更を完了させる」権限を持つことができないため、当然のことです。 しかし、あなた自身はどうでしょうか。当然、あなた自身は「自分自身のパスワード変更を完了させる」権限を持っており、CSRFの脆弱性はここを突いたものです。パスワード完了画面というのは1つのURI(Uniform Resource Identifier:注3)を持っており、パスワードを変更するということは、このURIに対して「パスワードを〜に変更してください」というリクエストを送出することとなります。
※注3:
インターネット上に存在する情報資源の場所を指し示す記述方式 このことについて何も対策がなければ、このリクエストを完了画面のURIに送出しさえすれば、図4のようなステップを踏まなくてもパスワードを変更できるのです。悪意のある第三者が次のようなURIにあなたを誘導したらどうなるでしょうか。
「ここのWebサイト面白いから見てごらん!」
http://www.example.jp/ch_pass?new_password=test (パスワード変更完了画面のURI) あなた自身があなたのパスワードを変更することになってしまうのです。先ほど説明したように、あなた自身は自分のパスワードを変更させる権限を持っているので、簡単に悪意のある第三者にパスワードを変更されてしまいます。 自分は自分自身のデータに対して常に権限を持っているのですから、対策は難しいと思うかもしれません。まれに、「完了画面の前に確認画面をはさむ」ということを対策としているWebサイトがあるようですが、先の例のように完了画面に直接アクセスさせられてしまえば、何の対策にもなっていないことがわかると思います。 しかし、対策のヒントはここにあります。CSRFの脆弱性というのは「ある1つの画面に対してアクセスさせる」ということを突いたものであり、連続する2つ以上の画面にはアクセスさせることができません。 つまり、必ず確認画面経由でなければ完了画面にアクセスできない(もしくはアクセスが無効)になるような仕組みを導入すればよいのです。実際の対策方法はいくつかあると思いますので、採用予定のSNSエンジンのベンダーに確認するとよいでしょう。 SNSではコミュニティサイトという性質上、会員同士がURLを教えあったりすることも多いのでCSRF対策は特に気をつけなければなりません。 |
||||||||||||
| セキュリティ対策を意識したテスト | ||||||||||||
|
今回解説したような脆弱性の話を聞くと不安になってしまうかもしれませんが、逆にこれらを「知っている」ということが身を守る上で大切なことなのです。もちろん、SNSエンジンの開発の現場ではこれらの脆弱性がないように慎重にテストしています。 Webアプリケーションのテストでは、仕様書に規定された動作をするかどうかだけでなく、これらの脆弱性がないかも入念に調べます。特に下記表1のような思い違いを犯してしまっていることも多いので、これらについては徹底的にテストしなければなりません。 過去にSQLインジェクションなどで事故を起こしてしまったWebサイトは、開発担当者がこれらのプログラミング時にミスをしてしまっていたことが問題だったのではなく、テストにこれらをチェックする項目を盛り込めていなかったことが原因だと思います。
comnitの開発ではgetデータはもちろん、postデータおよびCookieの値なども変更して、実際に攻撃をしてみてテストを行っています。 |
||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||
|
製品紹介 「SNSエンジン、comnit(コムニット)」 本連載は株式会社イースリーおよび株式会社ラソナの開発したSNSエンジン、comnitの利用ケースをもとに記事を掲載しています。 comnitで作り上げたコミュニティを生かして、お客様のマーケティング手法に合わせた実践的なケースをご紹介いたします。 詳細はコチラ http://www.comnit.jp/ http://www.e-3.jp/ |
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


