![]() |
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アプリケーションやサイトを開発している場合には一度目を通しておきたい文書だ。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
kizunaworld.org、LAのアーティスト・TOKiMONSTAによる楽曲を追加 [10:00 2/11] クリエイティブ |
|
[西部警察]大門のサングラスは照れ隠し? 制作担当者が語る舞台裏 [09:00 2/11] エンタメ |
|
9ストーリーズ ~バレンタインのエピソード~ [08:05 2/11] キャリア |
|
RX-7改フェラーリ登場!/マジックRX-7XX 【大阪オートメッセ2012】 [08:04 2/11] キャリア |
|
【連載】鉄道トリビア 第137回 山手線と京浜東北線から●●●が消えた!? [08:00 2/11] ライフ |