On Tue, Jun 12, 2012 at 7:38 AM, Brendan Eich <bren...@mozilla.org> wrote:
> Also, as you pointed out, even error.stack leaks information. Where do you
> draw the line?

Conservatively. I suggest that there be no error.stack, but rather
getStack(error), in order to avoid this information leak.


> I think Charles was arguing that anyone keeping secrets would need "use
> strict" to protect those secrets anyway, because otherwise
> arguments.caller.arguments[i] (given non-strict caller and callee) can get
> them.

Non-strict functions should not be assumed to be encapsulated, so it
would be ok if they leaked info in yet more ways. However, a stack
consists of a mixture of strict and non-strict activations, so I don't
see how this helps.


> This is a good argument for Error.getStack(errObj), indeed.

Not Error.getStack. Error is generally available, so if the amplifier
were Error.getStack, it would be generally available too.

This leaves open the question of where to get things that are not
generally available. I hope and expect that we can find good answers
in the module system. The getStack amplifier should be obtained by
importing a module that is not generally importable. We've already
encountered the need for such privileged imports...

>From <http://wiki.ecmascript.org/doku.php?id=strawman:weak_references>:
> Pending an accepted modules proposal, we do not yet specify in what namespace 
> this
> constructor [makeWeakRef] is found. Note that makeWeakRef is not safe for 
> general
> access since it grants access to the non-determinism inherent in observing 
> garbage
> collection. The resulting side channel reveals information that may violate 
> the
> confidentiality assumptions of other programs.

--
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to