Ajaxなアプリケーションにおいて、サーバからJSONを返す場合に、JSON自体はvalidであるにも関わらず、(IEの都合で)エスケープが不足していて脆弱性につながってる場合があるので、書いておきます。 発生するかもしれない脆弱性 JSONのエスケープが不足している場合に発生する可能性のある脆弱性は以下の通りです。 JSON内に含まれる機密情報の漏えい XSS それぞれの詳細については後述します。 開発側でやるべきこと 文字列中のUnicode文字は "\uXXXX" な形式にエスケープするとともに、ASCIIな範囲であっても「/」「<」「>」「+」も同様にエスケープすることにより、前述の脆弱性を防ぐことができます。 Perlであれば、以下のような感じになります。JSON->ascii(1) に続けて、JSON文字列を正規表現で置換しているあたりがキモになります。 use utf8; u
kazuhoさんがやってくれました。 ずいぶん前からjsonをC++でパース(SAXじゃなくてDOM)するのに小さいライブラリないかなーと思ってました。個人的にはjson-cというのを使ってたのですが、幾らか気に入らない所があったりビルドが少し手間だったりしていました。STLしか使わなくてvectorとかmapで表現されるツリー構造な物が欲しいなぁって思ってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、githubにあるjsonxxとかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から本格的に書き始めてついさっき出来上がりました。速いw 名前はpicojson とても小さく、実装コードだと300数十ステップ程です。しかもヘッダファイルだけなので管理が楽です。 試しにwassrのpubl
Ajaxる時のサーバとのデータ交換フォーマットとして、JSONを使う時、perlでサーバ側を実装する際にはJSONとかJSON::Syckというモジュールを使うとperlのデータ構造をJSONフォーマットに変換してくれるので便利です。 昨日これを使って、サーバからデータを取得し、textareaに取得したデータを入れるということをしたところ、改行を含んだテキストだと、改行の後にスペースが2個入ってしまうという現象に遭遇しました。 要はこうなってほしいところが、 foo bar baz こうなってしまうんです。 foo bar baz 調べてみると、クライアントで受け取ったJSONデータをevalした段階ですでにスペースを含んでいたので、サーバ側でJSONデータを作成するところに問題がありそうだということがわかりました。 そこで以下のようなスクリプトを書いて、JSON,JSON::Syckが
ここではあまりプログラミングの話はしないのですが(私も今気がついた), たまにはいいでしょう。 今回は JSON というデータフォーマットのお話です。 めっさ長文です。 ご注意を。 (3/8 追記があります) 最近 JSON (JavaScript Object Notation)にハマってます。 JSON というのはごく軽量のデータフォーマットで, Javascript (というより ECMAScript と言うべきかもしれませんが)の言語仕様がベースになっています。 とはいえ, JSON 自体は Javascript からは独立していますので他の言語(C/C++, Java, C#, Perl, Ruby, Python など)でも問題なく扱うことができます。 JSON は以下の2種類のデータ構造の組み合わせでできています。 (JSON フォーマットの詳しい解説をご所望の方は「入門 J
JSONをいじってみようと思っていたのだが、うまい具合にデータを出してくれているところが少ない。(del.icio.usくらい?)そんなわけで、RSSをJSONに加工して、それで遊んでみることにした。 #!/usr/bin/perl use strict; use CGI::Carp qw(fatalsToBrowser); use LWP::Simple; use XML::RSS; use JSON; binmode STDOUT,':utf8'; my $uri; if( -t ){ $uri = shift @ARGV; } else{ ( $uri = $ENV{'PATH_INFO'} ) =~ s|^/||; print "Content-Type: text/javascript; charset=utf-8?n?n"; } my $rss = XML::RSS->new;
del.icio.usで自分のブックマークのフィードがJSON形式で取れるようになってますね。これってJavaScriptと親和性が高いので、XMLで書かれているものをXPathやDOMでごにょごにょやるのに比べたら、Ajaxとかでいじったりする場合にはとても楽ですし、Perl使いとしてはこの形式(JSON)がなんとなく見易いので重宝しそうです。ということで、MTでもこれと同じようにJSON形式でフィードを出せるようにするプラグインを作ってみた。 作ったプラグインは、mt-jsonfeed.plです。RSSフィードと同じようにファイルに書き出すために簡単なテンプレートを作らなければならないのが、ちょっとめんどくさいのですが。。。 インストール方法は下記。 まず上記のプラグインをダウンロードして$MT_HOME/plugins/以下に配置します。 次に必要なモジュールをCPANからインストー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く