SQLの窓

2010年06月12日


prototype.js : 1.6.1と1.7_rc2 の evalJSON の違い

厳密に何が変わったのかは知りませんが、かなり XSS に神経質になっているのかもしれませんね。

Always set the sanitize parameter to true for data coming from
 externals sources to prevent XSS attacks.

元々、常に、str.evalJSON(true) という呼び出しして下さいって事になっていますが、それは常に入力値に対して無防備な文字列を通す場合です。ですが、true にしていて何も悪い事は無いのでしたほうがいいですね

ただ、1.7_rc2 では相当何かテコ入れしているようなのですが・・・イマイチマニュアルには書かれていないようなのです。( 当たり前と言えば当たり前ですが )

何なんでしょう。
1.6.1
  function evalJSON(sanitize) {
    var json = this.unfilterJSON();
    try {
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
    } catch (e) { }
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
  }

1.7_rc2
  function evalJSON(sanitize) {
    var json = this.unfilterJSON(),
        cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
    if (cx.test(json)) {
      json = json.replace(cx, function (a) {
        return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
      });
    }
    try {
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
    } catch (e) { }
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
  }



タグ:prototype.js
posted by lightbox at 2010-06-12 21:43 | prototype.js | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり