ぶれすとつーる

だいたいjavascript

withとProxyを使ってフロントJSで外部からローカルスコープにアクセスする切り口

Proxyとwith使えばアクティベーションオブジェクト抜ける・・・?

とりあえずwithの動的スコープ内のアクティベーションオブジェクトはさし抜けた。

Function#toStringとwithとeval組み合わせればローカルメソッドにアクセスできるのでは・・・?

(function () {
  var obj = {}
    , activate
    ;

  activate = new Proxy(obj, {
    has: function (t, n) {
      return true;
    },
    set: function (t, n, v, r) {
      obj[n] = v;
    }
  });

  with (activate) {
    var a = 1;
    b = 2;
  }

  console.log(activate);
}());


で、しばらくしてからこんなレスが。



こ、これはまさか!!!

var e = (function () {
  var h = 1;
  return function (c) {
    return eval(c);
  };
})();
e('alert(h)'); // 1


きっったーったったたてgmdfsklbmdfbl;ds、が^^^^ーーー!!!!!




ひどくかんどうしました!!!

@kyo_ago さんありがとうございます!!