we are looking at using the unparseable curft approach to our json as an extra level of security.
In looking at the approaches, I've come across google's while(1);
and facebook's for(;;)
; and then another mention of {}&&
I've seen comments surrounding the while(1);
that say the 1 being numeric can get clobbered, so my approach was going to be the for(;;);
.
Then I came across the {}&&
, which renders the json as invalid yet it can still be parsed/eval'ed. See this article for reference: http://www.sitepen.com/blog/2008/09/25/security-in-ajax/
What are your approaches? and what do your functions look like for making the ajax call with the unparseable curft?
I just always use a root object. As noted:
Note that having a root primitive (e.g. your response is just
5
) is not valid JSON. Section 2 of the RFC says:This isn't much of a burden, as I (and many sites) typically use an envelope format. E.g.:
or:
etc.
In that case, any array would just be the value of data, so you can serve syntactically valid JSON without any hijacking risk.