FW: Proposal: safeEval
doodad-js Admin
doodadjs at gmail.com
Wed Jun 20 18:26:13 UTC 2018
From: Claude Petit <petc at webmail.us>
Sent: Wednesday, June 20, 2018 2:23 PM
To: 'mikesamuel at gmail.com' <mikesamuel at gmail.com>
Cc: 'es-discuss' <es-discuss at mozilla.org>
Subject: RE: Proposal: safeEval
Thanks,
How would this compare to https://github.com/tc39/proposal-frozen-realms ?
I was not aware of that proposal or didn’t pay attention.I think “safeEval” provides ACLs, while your proposal don’t.
I'm not sure how to run @doodad-js/safeeval in node
That’s a Doodad module, and it must be loaded by Doodad before usage. Anyway, that’s not important.
What does it do for inputs like
Sure, as I told you, that’s very incomplete. I’m just bringing the idea. But I’ll fix that issues if they are present.
Claude
From: Mike Samuel <mikesamuel at gmail.com <mailto:mikesamuel at gmail.com> >
Sent: Wednesday, June 20, 2018 9:51 AM
To: doodadjs at gmail.com <mailto:doodadjs at gmail.com>
Cc: es-discuss <es-discuss at mozilla.org <mailto:es-discuss at mozilla.org> >
Subject: Re: Proposal: safeEval
How would this compare to https://github.com/tc39/proposal-frozen-realms ?
I'm not sure how to run @doodad-js/safeeval in node since require doesn't
provide obvious access to safeeval, but the code seems to do AST filtering.
What does it do for inputs like
safeEval(' 0..constructor.constructor("alert(1)")() ')
safeEval(' 0[x][x]`alert(1)`() ', { x: 'constructor' })
safeEval(' 0[x][y] = null ', { x: 'prototype', y: 'toString' })
On Tue, Jun 19, 2018 at 10:29 PM doodad-js Admin <doodadjs at gmail.com <mailto:doodadjs at gmail.com> > wrote:
Hi,
I take a chance to valorize “eval” again by proposing “safeEval”.
function safeEval(expression, [locals], [options]) {
......
};
So that you can:
safeEval(“1 + a”, {a: 2}); // returns “3”
safeEval(“1 + a()”, {a: function() {return 2}}, {allowFunctions: true}); // also returns “3”
but:
safeEval(“1 + a()”, {a: function() { return 2}}); // throws whatever you want because “allowFunctions” is denied
etc.
Note that local variables are specified in argument. Also note that “options” mainly gives/denies permissions. I’m not sure if we should be whitelisting or blacklisting features there though, or a mix of default enabled and disabled ones...
Very incomplete, but as for inspiration (and very useful to me): https://www.npmjs.com/package/@doodad-js/safeeval
Claude
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
Virus-free. <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> www.avg.com
_______________________________________________
es-discuss mailing list
es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
https://mail.mozilla.org/listinfo/es-discuss
---
This email has been checked for viruses by AVG.
https://www.avg.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180620/12bb4f0e/attachment-0001.html>
More information about the es-discuss
mailing list