[Harmony proxies] Non-configurable properties: fixed properties VS trap all with invariants enforcement

David Bruant david.bruant at labri.fr
Mon Jun 20 08:15:04 PDT 2011


We may need to switch from the (bicephal) fixed properties model to a 
"trap all with invariants enforcement" model.

With the current simple membrane example:
var o = {};
var s = makeSimpleMembrane(o);
var wrapper = s.wrapper,
     gate = s.gate;

// ... later, in untrusted code (variable name kept for readability)
Object.defineProperty(wrapper, 'a', {value:1, configurable:false});

// ... later, back in trusted code:

// ... later in the same untrusted code which had a reference to the 
wrapper object.
wrapper.a; // 1 in the fixed properties model
// throw if the 'get' traps was actually called.
// Such a difference is certainly noticeable in all traps.

The problem with the fixed property model is that properties exist on 
the proxy object itself with no way to control (and prevent in our case) 
access to them.


More information about the es-discuss mailing list