![]() |
Web Application Development - SitePen |
Ajax JavaScriptアプリケーションの普及にともない開発者には特にAjax関連のセキュリティへの理解が求められている。そこでSitePenにおいて公開されている文書Security in Ajaxに注目したい。Kris Zyp氏によって執筆されたドキュメントで、Ajax JavaScriptアプリケーションにおけるセキュリティがまとめられている。次の内容がまとめられており、Webアプリケーション開発や保守における資料として活用できる。
Kris Zyp氏はまずWebアプリケーションの設計はクライアントサーバモデルが便利であるとしながらも、セキュリティに関してはクライアントサーバモデルで考えるよりも「クライアント代理サーバモデル (client-deputy-server model)」とみなした方がよく、クロスサイトリソースにアクセスするようなWebアプリケーションを開発するには同モデルへの理解が大切だと説明している。
多くのサーバではアクセスを制御する方法として手動の認証とクッキーを使った認証状態保持を実装している。これは適切な方法だが、これだけではクロスサイトリクエストフォージェリ(CSRFまたはXSRF)と呼ばれる攻撃を受ける可能性がある。これを防ぐ方法はいくつもあるが、同氏はダブルサブミッションクッキーを使って明示的に認証をおこなう手法(Explicit Token Validation)が効果的な方法であると説明し、Dojoを使った実装例を紹介している。
これはJavaScriptを使ってクッキーの値を取り出してリクエストヘッダに付加するという手法。クライアント以外の他のサイトからのアクセスではJavaScriptを経由したクッキーへのアクセスができない。このためJavaScriptで付与されるヘッダが付与されていなかったり、付与されているヘッダの値をサーバでチェックして認証したクライアントからのアクセスかどうかを判断できる。簡単で効果的な方法だ。Dojoを使えば実装も簡単で済む。
CSRFへの対抗策としてRefererヘッダをチェックに使う方法もあるが、手軽な半面、回避する方法が多いことや、Refererヘッダが無効にされている場合には使えないという欠点もある。ほかの手軽な方法としてはHTTP Authenticationもあるがクッキーだけを使った場合と同様の脆弱性があり、やはりExplicit Token Validationを使った方が効果的だという。
それ以外にもJSONハイジャックに関する説明や対策方法、逆にサーバリソースを他のサイトに公開したり、ウェブサイト自身でほかのサイトからのアクセスを制限する方法が紹介されている (Proxied、JSONP、Cross-Site XHR)。またクロスサイトリソースに安全にアクセスするための方法としてwindow.nameの手法が紹介されている点にも注目しておきたい。
SitePenはもともとDojoやDWRを紹介することを目的としたサイトだ。Security in Ajaxで対策方法としてDojoを活用した例が紹介されているのはそのためだが、一般的なセキュリティドキュメントとしてもよくまとまっている。Ajax JavaScriptを活用したWebアプリケーションやサイトを開発している場合には一度目を通しておきたい文書だ。
| TI、再生可能エネルギー向けアプリ開発用マイコン搭載ソーラーキットを発表 [08:00 2/10] |
| 東レ、電子ペーパー用CNT透明導電フィルムの量産化技術を開発 [08:00 2/10] |
| TEL、微細プロセスに対応した高スループット塗布現像装置を発表 [08:00 2/10] |
| ユビキタスの高速起動ソリューション「QuickBoot」がマルチコアCPUに対応 [08:00 2/10] |
| ST、AMOLEDを搭載した次世代スマートフォンディスプレイ向け電源ICを発表 [08:00 2/10] |
|
【コラム】独占画像の壁紙付コラム 第2回 リアル流血描写が話題のRPGを映画化!禁断の血しぶき増量画像も入手 [09:06 2/10] エンタメ |
|
TVアニメ『ファイ・ブレイン ~神のパズル』、第2シリーズの新キャスト決定 [09:00 2/10] ホビー |
|
【レポート】新型「コンビニATM」入れ替え作業をミタ!! - 東京23区で4月末までに1700台! [09:00 2/10] ライフ |
|
【特別企画】標準で4GHz動作! メーカー公認のCPU+GPUダブルオーバークロックマシン登場 [08:30 2/10] パソコン |
|
【連載】Wordはなぜ思い通りにならないのか? 第25回 テンプレートの作成 [08:30 2/10] ビジネスPC |