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); }());
で、しばらくしてからこんなレスが。
evalでいいようなvar e=(function(){var h=1;return function(c){return eval(c)}})();e('alert(h)') // withとProxyを使ってフロントJSで外部からロnazomikan.hateblo.jp/entry/2013/06/…
— kyo agoさん (@kyo_ago) 2013年6月1日
こ、これはまさか!!!
var e = (function () { var h = 1; return function (c) { return eval(c); }; })(); e('alert(h)'); // 1
きっったーったったたてgmdfsklbmdfbl;ds、が^^^^ーーー!!!!!
@nazomikan 私もこのへん見てて「そういえばそんな感じのことができるなー」とか思いついてました // evalとnew Functionはちょっとだけ意味が違う - 金利0無利息キャッシング – キャッシングできます -subtech.g.hatena.ne.jp/mala/20121012/…
— kyo agoさん (@kyo_ago) 2013年6月1日
ひどくかんどうしました!!!
@kyo_ago さんありがとうございます!!