Ajaxなアプリケーションにおいて、サーバからJSONを返す場合に、JSON自体はvalidであるにも関わらず、(IEの都合で)エスケープが不足していて脆弱性につながってる場合があるので、書いておきます。 発生するかもしれない脆弱性 JSONのエスケープが不足している場合に発生する可能性のある脆弱性は以下の通りです。 JSON内に含まれる機密情報の漏えい XSS それぞれの詳細については後述します。 開発側でやるべきこと 文字列中のUnicode文字は "\uXXXX" な形式にエスケープするとともに、ASCIIな範囲であっても「/」「<」「>」「+」も同様にエスケープすることにより、前述の脆弱性を防ぐことができます。 Perlであれば、以下のような感じになります。JSON->ascii(1) に続けて、JSON文字列を正規表現で置換しているあたりがキモになります。 use utf8; u
JavaでのRESTfulウェブサービス(JSR-311)実装のJersey(https://jersey.dev.java.net/)の技術TIPS。 JAX-RS と Jersey JAX-RSは、JavaでRESTfulウェブサービスを構築するための標準化された annotationやインターフェースAPIを提供します。 まだ完全なものではないようですが最終系は、Java EE 6の一部になるようです。 JAX-RSの詳細な情報は、jsr311 project(https://jsr311.dev.java.net/)で得る事ができます。 Jerseyプロジェクトからダウンロードすると、いくつかのサンプルが見れます。 技術TIPSで見たのは、Bookmark Application。 データがJSON。 JAX-RS APIを使い以下のようなJSONデータを返します(ブックマーク保存
JSON.parseとJSON.stringifyがサポートされた。 これは、JSON in JavaScriptのネイティブ実装と言える。 これからWebサイトでJSONを使う時は、 <head> <script type="text/javascript"> if (typeof JSON != "object") document.write('<script type="text/javascript" src="http://www.json.org/json2.js"></script>'); // 実際にはローカルに落したものを使う </script> <script type="text/javascript"> // JSON.parseやJSON.stringifyを使う処理 </script> </head> とすると、クロスブラウザで、なおかつ最新のブラウザだとネイ
JSON評価時の危険性 受け取ったJSON文字列を、JavaScriptのオブジェクトとして扱うためにevalを使うと説明しましたが、万が一JSONデータ内に、攻撃者の仕組んだスクリプト相当の文字列が含まれていた場合、evalを使うとJavaScriptとしてそのまま実行してしまうため、大変危険です。 例えば、以下のようなJSONが生成されたとします。太字部分が攻撃者の用意したデータです。 これをそのままevalで評価すると、alert(document.cookie)も動作してしまいます。 対策としてはJSONによるXSS同様、文字列内の半角英数字以外をすべて\uXXXXの形式でエスケープすることなのですが、後述するXMLHttpRequest Level 2などを用い、クロスドメインで他者の用意したJSONを読み込んだ場合には、正しくエスケープされていることが保証されません。そのため、
原文(投稿日:2009/12/09)へのリンク ECMAScript 5の仕様がが今週、リリースされた(pdf)。ECMAScriptは一般的にはJavaScript™として知られている。最新バージョンでは、基本ライブラリに改善が加えられている一方、一般的でありがちなコーディングミスを特定し、除去するためにより厳格なランタイムモードが導入された。 ECMAScript 4を合理化しようという初期の試みは大失敗に終わった。結局、Adobe社のActionScriptだけが提案された変更点に対応しただけだった。ECMAはバージョン4の仕様もリリースできなかった。バージョン4の仕様では、様々なグループの実装に悪影響を与えてしまうからだ。また、そのような問題がある限り、ブラウザもサポートできない。 ここ数年にわたって、JavaScriptのエンジンに大規模な改善が加えられた。例えば、NitroやT
最近、WebKitにObject.defineProperty、Object.defineProperties、Object.getOwnPropertyDescriptor等、今まで間接的にしかいじれなかったり、JSからは設定することのできなかった内部プロパティを操作するためのメソッドが入った。現時点のWebKitに入っているECMAScript5の新しい機能をここにメモしておく。 const: const foo = "hello"; 定数を宣言するためのconst文。ただ、何故かfooに値を再代入できてしまう(?)ようだ。 Array#forEach、Array#some等: [1, 2, 3, 4].forEach(function (v, i) { alert(v + ", " + i); }); 今までfor文などを使って書いていた物を高階関数を使って抽象化したメソッド達。Ar
John Resig - JavaScript, Programming, and Web Applications jQueryの開発者であるJohn Resig氏が自身のブログにおいて次の2つのドキュメントを公開した。ECMAScript 5における、とくに興味深い新機能がまとめられている。ECMAScript 5はECMAScript 3.1をベースにECMAScript 4からいくつかの機能を取り込んだ策定中の最新版。いわゆるJavaScript 2.0のベースになる規格となる。 ECMAScript 5 Objects and Properties ECMAScript 5 Strict Mode, JSON, and More ECMAScript 5に関する変更点はGoogleのMark S. Miller氏、Waldemar Horwat氏、Mike Samuel氏の発表資
“動物図鑑”で知るCouchDBの特徴:ゆったリラックス! CouchDBがあるところ(1)(1/3 ページ) ドキュメントを手軽にWebで公開したいとき、リレーショナルデータベースで実装することに違和感を覚えることはありませんか? CouchDBはそのようなニーズに合った、新しいデータベース管理システムです。CouchDBを知り、リラックスしながら実装をしていきましょう(編集部) CouchDBとは? CouchDB(カウチDB)はドキュメントをデータとして管理し、Webで公開することに最適化されたデータベース管理システムです。CouchDBの“ドキュメント”は報告書、仕様書、議事録といった文書や、名刺、プロフィールといったデータの集合のことを指しています。また、JavaScriptのソースコードをドキュメントの一部として配置することも可能です。 OSSとして一般へのリリースが始まったの
やってきました。参加された皆様お疲れ様でした。前日 ust の設定をがんばってみたのですが、私のMacbookだとちゃんとしたマイクを買わないと、Macbook自体のCPUファンの音がノイズの固まりになって使い物になりませんでしたorz。それと、実はルノアールではHotspotがないという。。。 資料のリンクは以下に集まると思います。 http://groups.google.co.jp/group/couchdb-jp/web/couchdb-definitive-guide?hl=ja 先に反省と次回方針 もっと広いところでやる / これぐらいの人数でやるのであれば Position Paper 的なものもあってもいいかも。 ちょっと詰め込みすぎた感があるので、Chapterの間をRelax Time(という名の何でもショートセッション)にする。 懇親会は事前に出欠取ろう(移動の間はも
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く