> If against all odds, all code everywhere *did* magically drop __proto__
> in favor of Object.setPrototypeOf, then SES and similar subsets would be
> unable to protect secure code from ambient Object.setPrototypeOf usage
> from the insecure side on the secure side's objects, unless
> Object.setPrototypeOf were removed -- but that would break insecure-side
> code that reasonably (per your wishes) uses Object.setPrototypeOf in
> lieu of __proto__.

Well, I don't completely agree with you on this. It would be easy to protect 
objects using 

   Object.freezePrototype(o)

or 

   Object.definePrototypeSetter(o, function(o,p) { 
      if(isValid(p)) return p else throw new Error('...'); 
   }). 

I would really like to know how you expect SES to secure a property that lays 
in the Object.prototype object and could be overriden by a malicious object to 
intercept your __proto__ setter calls.

BTW, you could also *redefine* Object.setPrototypeOf to match your security 
requirements without completely removing it.


I know it's not your point of view, but if MSFT never implements __proto__ in 
IE (except behind a 'compatibility' mode for sites that rely on it, in the 
Opera's browser.js way) and if everbody do implement Object.setPrototypeOf(...) 
then the few libraries using __proto__ will end up migrating to 
Object.setPrototypeOf(...) or use a polyfill for __proto__ in the case it isn't 
supported.

Phasing out failed experiments *is* possible. I don't think a browser that 
doesn't support <blink> or <marquee> or even document.layers would have a lot 
of problems to view the web as it's now, yet I remember a time where 
document.layers <marquee> were used quite a lot. I do think the argument used 
to claim __proto__ is unfixable is somewhat wrong.                              
      
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to