■ Ajax特有のリスク
* Ajax特有のリスクを考える。http://www.websec-room.com/2013/07/28/876
http://d.hatena.ne.jp/ockeghem/20110907/p1
が参考になる
【1】XSS
1-1) 対応
(1) 「X-Requested-With: XMLHttpRequest」 のあるリクエストのみを許可する => X-Requested-With の値によって、リクエストがAjaxのものなのか、Ajax以外のものかを判別することができる => X-Requested-With のない場合、サーバ側でエラーにする (2) エスケープ処理を施す(「<」「>」などの) (3) Content-Type を "application/json; charset=utf-8" にする
【2】JSONハイジャック(JSON Hijacking)
* JSONを使用したサイトにログイン中のユーザが、悪意のサイトにアクセスすると Webサーバー上の機密情報を盗み出す攻撃。
2-1) 対応
(1) 「X-Requested-With: XMLHttpRequest」 のあるリクエストのみを許可する (2) POST のみを許可する (3) JSONデータの先頭にwhile(1); / for(;;); などを書いて、 script要素から呼ばれた場合、無限ループにする (4) JavaScriptとして不完全なJSONを送り、後から補う => (3)(4)は難しいなー
■ クロスドメイン制約について
* Ajaxは、セキュリティ上の理由から、別ドメインのサーバとは通信できない制約がある
クロスドメイン制約を回避するには : JSONP(JSON with Padding)
* Padding : 不要なもの、付け足し * JSON形式のデータにコールバック関数の呼び出しのためのコードを付加することで、 クロスドメインでデータの受け渡しを実現するためのデータ形式http://tutty.info/496
http://www.atmarkit.co.jp/ait/articles/0908/10/news087.html
参考文献
* 留意することhttp://itpro.nikkeibp.co.jp/article/COLUMN/20071026/285635/?rt=nocnt
* AjaxのXSS
http://d.hatena.ne.jp/ockeghem/20110905/p1
http://d.hatena.ne.jp/ockeghem/20110906/p1
http://d.hatena.ne.jp/ockeghem/20110907/p1
* [気になる]JSONの守り方/[さらに気になる]JSONの守り方
http://www.atmarkit.co.jp/ait/articles/0908/10/news087.html
http://www.atmarkit.co.jp/ait/articles/0910/14/news117.html
* JSON セキュリティ対策
http://www.websec-room.com/2013/07/28/876
* while(1)
http://d.hatena.ne.jp/hasegawayosuke/20130206/p1
* X-Content-Type-Options: nosniff => 内容からのコンテントタイプの推測しない
http://swdyh.tumblr.com/post/50154551190/nosniff
http://d.hatena.ne.jp/hasegawayosuke/20110106/p1
* CSRF対策
http://madaolog.blogspot.jp/2012/12/ajaxwebcsrf.html
* ASP.NET MVCのセキュリティ対策とクライアントサイドスクリプト活用方法
http://codezine.jp/article/detail/4467?p=2
* Ajax の脆弱性
http://blog.tokumaru.org/2013/05/JSON-information-disclosure-vulnerability-CVE-2013-1297.html
http://blog.64p.org/entry/20111125/1322185155
http://www.ibm.com/developerworks/jp/web/library/wa-vulnerabilities/