この記事は abicky.net の Perl 初心者がとある JavaScript コードを読むための基礎知識 に移行しました
この記事は abicky.net の Perl 初心者がとある JavaScript コードを読むための基礎知識 に移行しました
はじめに 久しぶりに文字コードのXSSの話が盛り上がってるので、久しぶり(3年以上ぶり!)にブログを書きました。あけましておめでとうございます。今年と来年とそのさきも3年くらいよろしくお願いします。 blog.tokumaru.org HTTPレスポンスヘッダーやHTML metaタグでの文字エンコーディング名の指定がない場合に攻撃者がISO-2022-JP特有のバイト列をHTML内に埋め込むことでブラウザーがそのコンテンツをISO-2022-JPであると誤認する、そのときに動的にJavaScript内の文字列を生成しているとするとUS-ASCIIでいうバックスラッシュではなくJIS X0201の円記号を挿入することでエスケープが無効になる、結果としてJavaScriptの文字列外に攻撃者はコードを置くことができるというのが徳丸さんの書かれている記事になります。 対策としては、徳丸さんの記
update: なんとMatz様から直々の指摘を受けてしまった: http://twitter.com/yukihiro_matz/status/26685527109 実はこのポストの後、ベンチプレスを1セットやって一息ついていいたところ、schemeの例が間違っていることに気付いた。確かにループのボディーにあたるlambdaでletでローカルを作ってキャプチャーするとMatz様のおっしゃる通り。 俺はPerlに心を侵されていたのか… いつも「動けばいいやぁ~」みたいな気持で使っていたclosureだが、もう一度勉強しなおした方がよさそうだ。 (let ([closures '()]) (for-each ;; これがループのボディーになるよな。 (lambda (i) ;; じゃ、ここにローカル (let ([loop-local-var (sprintf "foo~A" i)]) (
2010年09月03日05:30 カテゴリLightweight LanguagesMath Algorithm - 0と1を次々と返す簡単なお仕事 ごもっとも。 0と1を次々返す方法 - a2c.get.diary TrueだったらFalseで、FalseだったらTrueにしたい。 なんかそんなことそこかしこで必要で、その為の便利なものが あるのかなぁと思ったんだけど無いぽい Closure 本来は一番おすすめなのだが… JavaScript ()が煩わしいが、perlやrubyよりは自然。 #!/usr/bin/js var flipflop = function(p){ p = !p; return function(){ return p = !p; }; }; var fl = flipflop(); console.log(fl()); console.log(fl()); c
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く