<div dir="ltr">I'll point out that encoding and evaluating<span style="font-size:13px"> JSON literally can easily become a potential security issue, anyways (consider if a user can encode `--></script>` in the relevant data). </span><span style="font-size:13px">But you might have a point if you consider JSONP. </span></div><span>
</span><br><div class="gmail_quote"><div dir="ltr">On Sun, Oct 16, 2016, 22:08 Richard Gibson <<a href="mailto:richard.gibson@gmail.com">richard.gibson@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">Allow me to clarify: permitting U+2028 and U+2029 in ECMAScript strings would allow safely embedding arbitrary JSON in the precise sense that such embeddings would always be syntactically valid and evaluatable Literal, ArrayLiteral, or ObjectLiteral expressions. That is already true of "__proto__" keys, even though their evaluation results in web browsers don't exactly match JSON.parse.</div></blockquote></div><div><br></div><div>By the way, `"__proto__"` is intentionally different than `__proto__` to avoid a gaping security hole for those using objects as dictionaries (untrusted code causing prototypes to change is bad). The string version is no different from any other property, while the identifier version either gets or sets the prototype. </div><div><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg">On Fri, Sep 30, 2016 at 2:43 AM, Claude Pache <span dir="ltr" class="gmail_msg"><<a href="mailto:claude.pache@gmail.com" class="gmail_msg" target="_blank">claude.pache@gmail.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg">Besides U+2028 and U+2029, there is also the __proto__ key, which has a special meaning in JS as implemented in browser. That prevents definitely to "safely" embed arbitrary JSON within JS.<span class="m_6794077950045545418HOEnZb gmail_msg"><font color="#888888" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">—Claude</div></font></span><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg"><div class="m_6794077950045545418h5 gmail_msg"><div class="gmail_msg">Le 29 sept. 2016 à 23:21, Richard Gibson <<a href="mailto:richard.gibson@gmail.com" class="gmail_msg" target="_blank">richard.gibson@gmail.com</a>> a écrit :</div><br class="m_6794077950045545418m_5455088060157247146Apple-interchange-newline gmail_msg"></div></div><div class="gmail_msg"><div class="gmail_msg"><div class="m_6794077950045545418h5 gmail_msg"><div dir="ltr" class="gmail_msg">ECMAScript claims JSON as a subset twice in <a href="https://tc39.github.io/ecma262/#sec-json.parse" class="gmail_msg" target="_blank">https://tc39.github.io/ecma262/#sec-json.parse</a> , but (as has been well-documented) that is not true because it JSON strings can contain unescaped U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR while ECMAScript strings cannot. Mark Miller alludes to a pre-ES5 push for allowing them (which ultimately failed) in <a href="https://esdiscuss.org/topic/json-stringify-script#content-17" class="gmail_msg" target="_blank">https://esdiscuss.org/topic/json-stringify-script#content-17</a> , and posits that a repeat today would also fail. Having never seen a windmill that didn't need slaying, I hereby make the attempt.<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Aside from slightly simplifying the spec (by eliminating the need for a production specific to JSON.parse) and retroactively validating its claims, such a change to _DoubleStringCharacter_ and _SingleStringCharacter_ would allow safely embedding arbitrary JSON directly within ECMAScript, a request which has been made before in the context of source concatenation/construction.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">User-visible effects from the change would be limited to the absence of SyntaxError s from code like `eval(' "\u2028" ')` or its raw-text equivalent.</div></div></div></div><span class="gmail_msg">
_______________________________________________<br class="gmail_msg">es-discuss mailing list<br class="gmail_msg"><a href="mailto:es-discuss@mozilla.org" class="gmail_msg" target="_blank">es-discuss@mozilla.org</a><br class="gmail_msg"><a href="https://mail.mozilla.org/listinfo/es-discuss" class="gmail_msg" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br class="gmail_msg"></span></div></blockquote></div><br class="gmail_msg"></div></div></blockquote></div><br class="gmail_msg"></div>
_______________________________________________<br class="gmail_msg">
es-discuss mailing list<br class="gmail_msg">
<a href="mailto:es-discuss@mozilla.org" class="gmail_msg" target="_blank">es-discuss@mozilla.org</a><br class="gmail_msg">
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br class="gmail_msg">
</blockquote></div>