<div dir="ltr">Put better, the spec requires that Object.freeze(Object.prototype) works.<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 24, 2015 at 2:57 PM, Mark Miller <span dir="ltr"><<a href="mailto:erights@gmail.com" target="_blank">erights@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Sat, Jan 24, 2015 at 2:42 PM, Isiah Meadows <span dir="ltr"><<a href="mailto:impinball@gmail.com" target="_blank">impinball@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">> From: "Mark S. Miller" <<a href="mailto:erights@google.com" target="_blank">erights@google.com</a>><br>
> To: Gary Guo <<a href="mailto:nbdd0121@hotmail.com" target="_blank">nbdd0121@hotmail.com</a>><br>
> Cc: "<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>" <<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a>><br>
> Date: Sat, 24 Jan 2015 07:11:35 -0800<br>
> Subject: Re: @@toStringTag spoofing for null and undefined<br>
> Of course it can, by tamper proofing (essentially, freezing) Object.prototype. None of these protections are relevant anyway in an environment in which the primordials are not locked down.</p>
<p dir="ltr">Yeah, pretty much. That proverbial inch was given a long time ago. And the proverbial mile taken. And I highly doubt the spec is going to require `Object.freeze(Object.prototype)`,</p></blockquote></span><div>Of course not. The key is the spec allows it. SES makes use of that.</div><div><div class="h5"><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr"> since that prohibits future polyfills and prolyfills of the Object prototype. Also, you could always straight up overwrite it, but that's even harder to protect against. (And how many cases do you know of literally overwriting built-in prototypes?) </p>
<p dir="ltr">Or, to throw out an analog to Java, it is perfectly possible to call or even override a private method through reflection. JavaScript simply has more accessible reflection, more often useful since it's a more dynamic prototype-based OO language as opposed to a stricter class-based language. </p>
<p dir="ltr">><br>
> On Sat, Jan 24, 2015 at 6:11 AM, Gary Guo <<a href="mailto:nbdd0121@hotmail.com" target="_blank">nbdd0121@hotmail.com</a>> wrote:<br>
>><br>
>> Now I have a tendency to support the suggestion that cuts the anti-spoofing part. If coder wants to make an object and pretend it's a built-in, let it be. The anti-spoofing algorithm could not prevent this case:<br>
>> ```<br>
>> Object.prototype.toString = function(){<br>
>>   return '[object I_Can_Be_Anything]';<br>
>> }<br>
>> ```<br>
>></p>
<p dir="ltr">Or this:<br>
```js<br>
function handler() {<br>
  throw new Error("No prototype for you!");<br>
}</p>
<p dir="ltr">Object.defineProperty(<br>
  Object,<br>
  'prototype',<br>
  {<br>
    get: handler,<br>
    set: handler,<br>
    enumerable: true<br>
  });<br>
```</p>
<p dir="ltr">Me thinks this isn't going to get "fixed". </p>
<p dir="ltr">>> _______________________________________________<br>
>> es-discuss mailing list<br>
>> <a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
>> <a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
>><br>
><br>
><span><font color="#888888"><br>
><br>
> -- <br>
>     Cheers,<br>
>     --MarkM<br>
><br>
></font></span></p>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>Text by me above is hereby placed in the public domain<br><br>  Cheers,<br>  --MarkM</div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Text by me above is hereby placed in the public domain<br><br>  Cheers,<br>  --MarkM</div>
</div>