Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Web Technology by (47.6k points)

Why does Google prepend while(1); to their (private) JSON responses?

For example, here's a response while turning a calendar on and off in Google Calendar:

while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],

['remindOnRespondedEventsOnly','true'], ['hideInvitations_remindOnRespondedEventsOnly','false_true'], ['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]

I would assume this is to prevent people from doing an eval() on it, but all you'd really have to do is replace the while and then you'd be set. I would assume the eval prevention is to make sure people write safe JSON parsing code.

I've seen this used in a couple of other places, too, but a lot more so with Google (Mail, Calendar, Contacts, etc.) Strangely enough, Google Docs starts with &&&START&&& instead, and Google Contacts seems to start with while(1); &&&START&&&.

What's going on here?

1 Answer

0 votes
by (106k points)

The reason why Google prepend while(1); to their JSON responses is because it prevents JSON hijacking, which is a major JSON security issue that is fixed in all major browsers since 2011 with ECMAScript 5.

Related questions

0 votes
1 answer
0 votes
1 answer
0 votes
1 answer
asked Aug 24, 2019 in Web Technology by Tech4ever (20.3k points)
0 votes
1 answer

Browse Categories

...