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.