gaz Heyes wrote:
On 26 June 2012 17:19, Allen Wirfs-Brock <[email protected] <mailto:[email protected]>> wrote:

    I'm working on incorporating quasis into the ES6 draft and there
    is an issue I want to discuss:

    In the wiki proposal[1]  $  is used as the prefix for
    substitutions that may be of two forms:
       `xyz$foo 1234`      //$foo substitues the value of the variable foo
       `xyz${foo} 1234`    ${expr} generally substitues the result of
    evaluating expr, so ${foo} substitutes the value of foo


I have to say I disagree with the whole feature, this will introduce a new class of DOM based XSS attacks since developers in their infinite wisdom will use this feature to place user input inside multi-line strings. e.g. message = `USER_INPUT` and the attack being ${globalVariable}.

This isn't much harder today with the fine + operator.

What quasiliterals enable is

  safehtml`... ${no_fear_here} ...`

instead of

  safehtml_but_slow("... ${no_fear_here} ...")

which has to parse out the ${} bits at runtime.

Any way you program, whether + or an API built on it or ES6 quasis, users have to remember to sanitize.

A list of variable substitutions would mitigate that risk like how the printf function works but allowing any variable reference is a bad idea IMO.

What's the difference between

  `lit1 ${exp1} lit2 ${exp2} lit3`

and

  sprintf("lit1 %s lit2 %s lit3", exp1, exp2)

? Again, other than failing to have compile-time help checking that number of format specifiers matches number of trailing arguments (eliminated in quasis by embedding expN)?

I would also like to see how the context aware escaping would work since in order to provide such a mechanism you would have to render the content at some point and the context could change and the user input could change when the content is rendered. The fact that CSS doesn't provide any way to safely escape user input in property names/values without fully white listing the whole specification I fail to see how a context aware escaping would work in that instance.

http://code.google.com/p/js-quasis-libraries-and-repl/source/browse/trunk/js/safehtml.js?r=137

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to