<br><br><div class="gmail_quote">On Fri, Jan 6, 2012 at 6:56 PM, Mark S. Miller <span dir="ltr"><<a href="mailto:erights@google.com">erights@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><div class="gmail_quote"><div class="im">On Fri, Jan 6, 2012 at 9:27 AM, Andrea Giammarchi <span dir="ltr"><<a href="mailto:andrea.giammarchi@gmail.com" target="_blank">andrea.giammarchi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
that whole variable can be redefined or used as communication channel ... I really don't understand what is the problem.</blockquote><div><br></div></div><div>The variable "Object"? No, in SES that's unassignable. As layered on ES5, we enforce that simply by making globalObject.Object a non-writable non-configurable data property.</div>
<div class="im">
<div><br></div></div></div></blockquote><div><br></div><div>I was rather talking about your WeakMap</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">
<div class="gmail_quote"><div class="im"><div></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div><div>The returned bound once object could be frozen without problems but if the function is private with the gist I have posted:</div>

</blockquote><div><br></div></div><div><div><br></div><div>Essentially yes. The returned bound object would have to be transitively immutable, but in this case freeze may be enough. Of course, this can't be a fix to "bind" since that would break bind's current behavior. But if it were a new API as you suggest, that would no longer violate any principles, I believe.</div>

<div><br></div></div></div></blockquote><div><br></div><div>new API and frozen would just work for me </div><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">
<div class="gmail_quote"><div><div></div><div>Separately, I do not believe the need for this is adequate to justify adding a new API. But that's a completely different topic.</div><div></div></div><div class="im"><div>
<br></div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br></div><div> 1. you cannot redefine Object.prototype at all</div><div> 2. you cannot access single bound function/object from any other place</div><div><br></div><div>If I have my own scope I want to do what's needed, this does not mean the problem does not exist, isn't it?</div>


<div><br></div><div>In your case you have, as example, different problems with that WeakMap</div><div><br></div><div> 1. everyone can WeakMap = function () {}; anywhere</div></blockquote><div><br></div></div><div>Again, no they can't because all whitelisted global variables are unassignable.</div>
<div class="im">
<div><br></div><div></div></div></div></blockquote><div><br></div><div>it's a var WeakMap in the global scope ... still talking about your shim, probably I am missing some dependency?</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"><div class="gmail_quote"><div class="im"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div> 2. if already defined, the definition of Object getOwnPropertyDescriptor to avoid access to that "protected" variable will fail and throw an error ... isn't it? That does not look safe either</div>

<div> 3. as you wrote, Proxy easily discover that secret</div><div> 4. your implementation has same problem I am talking about ... trapped "protected/private" stuff others should not see</div><div><br></div><div>


Same stuff with my problem except even proxy won't be able to retrieve that bound function since no property is attached.</div><div><br></div><div>I can't hardly believe you are so worried about an edge case and you don't see the pachyderm we are all dealing with ... properties attached and accessible "from everyone" ... this is for you safe?</div>


<div><br></div><div>Is obj.bound = obj.method.bind(obj) a better approach than the one I am suggesting ? </div><div><br></div><div>I am sorry but I don't think so.</div></blockquote><div><br></div></div><div>I don't think the benefits you explain are worth the cost of a new API. But that's separate from the security issue.</div>
</div></blockquote><div><br></div><div>Fair enough, so dead line it is.</div><div><br></div><div>br,</div><div>    andrea</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div class="im">
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br></div><div>Best Regards<div><div><br><br><div class="gmail_quote">
On Fri, Jan 6, 2012 at 6:03 PM, Mark S. Miller <span dir="ltr"><<a href="mailto:erights@google.com" target="_blank">erights@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>On Fri, Jan 6, 2012 at 1:50 AM, David Bruant <span dir="ltr"><<a href="mailto:bruant.d@gmail.com" target="_blank">bruant.d@gmail.com</a>></span> wrote:<br></div><div class="gmail_quote"><div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Le 06/01/2012 10:40, Andrea Giammarchi a écrit :
    <blockquote type="cite">if WeakMaps are so smart ... it means we cannot shim
      them without causing leaks in non WeakMap ready browsers since no
      magic will happen,objects as keys will simply be persistent in the
      WeakMap private scope</blockquote>
    Indeed. Also, Mark Miller mentionned a couple of times that the SES
    polyfill [1] leaks less than one could expect. I haven't taken the
    time to look into that but it's probably worth mentionning.<br></div></blockquote><div><br></div></div><div>And it's probably worth looking into ;)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div bgcolor="#FFFFFF" text="#000000">
    [1]
    <a href="http://code.google.com/p/es-lab/source/browse/trunk/src/ses/WeakMap.js" target="_blank">http://code.google.com/p/es-lab/source/browse/trunk/src/ses/WeakMap.js</a><div><div><br><br></div></div></div><span><font color="#888888">
</font></span></blockquote></div><span><font color="#888888"><div><br></div>-- <br>    Cheers,<br>    --MarkM<br>
</font></span></blockquote></div><br></div></div></div>
</blockquote></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br>    Cheers,<br>    --MarkM<br>
</font></span></blockquote></div><br>