스택큐힙리스트

왜 Google은 JSON 응답에 while(1);을 앞에 추가하나요? 본문

카테고리 없음

왜 Google은 JSON 응답에 while(1);을 앞에 추가하나요?

스택큐힙리스트 2024. 1. 3. 00:43
반응형

왜 Google은 (비공개) JSON 응답에 while(1);을 앞에 덧붙이는 걸까요?


예를 들어, Google 캘린더에서 달력을 켜고 끌 때의 응답은 다음과 같습니다:


while (1);
[
['u', [
['smsSentFlag', 'false'],
['hideInvitations', 'false'],
['remindOnRespondedEventsOnly', 'true'],
['hideInvitations_remindOnRespondedEventsOnly', 'false_true'],
['Calendar ID stripped for privacy', 'false'],
['smsVerifiedFlag', 'true']
]]
]

제가 생각하기에는 이렇게 하는 이유는 사람들이 eval()을 사용하지 못하도록 하는 것 같습니다. 하지만 실제로는 while을 대체하면 그만이기 때문에 eval 방지는 안전한 JSON 파싱 코드를 작성하는 것을 보장하기 위한 것이라고 할 수 있습니다.

나는 이것을 몇 군데 다른 곳에서도 본 적이 있지만, 특히 Google (메일, 캘린더, 연락처 등)에서 훨씬 더 많이 본다. 신기하게도, Google 문서&&&START&&& 대신에 시작되고, Google 연락처는 while(1); &&&START&&&로 시작하는 것 같다.


여기서 무슨 일이 일어나고 있는 걸까요?

답변 1

가짜 예제: Google이 mail.google.com/json?action=inbox과 같은 URL을 가지고 있다고 가정해 보겠습니다. 이 URL은 JSON 형식으로 받은 수신함의 첫 50개 메시지를 반환합니다. 다른 도메인의 악성 웹사이트는 같은 출처 정책으로 인해 이 데이터를 가져오기 위해 AJAX 요청을 할 수 없지만, 그들은 <script> 태그를 사용하여 URL을 포함할 수 있습니다. 이 URL은 당신의 쿠키로 방문되며, 전역 배열 생성자 또는 접근자 메서드를 무력화 함으로써 객체(배열 또는 해시) 속성이 설정될 때마다 호출되는 메소드를 가질 수 있으므로 JSON 내용을 읽을 수 있습니다.

while(1); 또는 &&&BLAH&&&은 다음을 방지합니다: mail.google.com에서의 AJAX 요청은 전체 텍스트 콘텐츠에 대한 완전한 액세스 권한이 있으며, 이를 제거 할 수 있습니다. 그러나 무작위로 삽입된 <script> 태그는 어떠한 처리도 없이 JavaScript를 무분별하게 실행하여 무한 루프 또는 구문 오류가 발생할 수 있습니다.


이것은 크로스 사이트 요청 위조 문제에 대해서는 다루지 않습니다.

답변 2

[Title] Google의 JSON 응답에 while(1);를 앞에 추가하는 이유
[Introduction]
Google은 웹 검색, 광고, 지도 등 다양한 서비스를 제공하는 세계적으로 유명한 회사입니다. 그들의 JSON 응답에 while(1);를 추가하는 것은 주목할 만한 특징 중 하나입니다. 본 에세이에서는 Google이 JSON 응답에서 while(1);를 왜 사용하는지에 대해 SEO에 주의를 기울여 설명하겠습니다.
[Body]
1. JSON과 Google의 서비스
- JSON(JavaScript Object Notation)은 데이터 교환을 위한 경량의 형식이며, 웹 개발에서 널리 사용됩니다.
- Google은 JSON 형식을 사용하여 사용자에게 정보를 전달하고 서비스를 제공합니다.
- 그러나 Google은 JSON 응답에 while(1);를 추가하는 것으로 유명합니다. 왜 그럴까요?
2. 보안 및 데이터 무결성 확보
- while(1);은 무한 루프를 의미합니다. 따라서 데이터를 전송하는 동안 무한 실행을 보장합니다.
- 이는 데이터 무결성을 보호하고 유출되는 데이터가 손상되지 않음을 보장하는 보안 기능입니다.
- 또한 while(1);은 JSON 데이터를 외부 도메인에서 직접 사용하려는 시도를 방지하여 사이트의 안전성을 높입니다.
- 이러한 요인들은 Google의 서비스에서 중요한 역할을 수행하는 SEO(검색 엔진 최적화)에 긍정적인 영향을 미칩니다.
3. 브라우저 호환성 구현
- while(1);의 사용은 브라우저 호환성을 고려한 결정입니다.
- 일부 오래된 브라우저는 응답 형식을 잘못 이해하거나 해석하지 못할 수 있습니다.
- 하지만 while(1);을 추가함으로써 브라우저들은 JSON 응답을 정확히 이해하고 처리할 수 있습니다.
- 이는 Google 서비스의 원활한 작동과 사용자 경험에 긍정적인 영향을 미칩니다.

4. 기술 문제 해결을 위한 예방책
- Google은 전 세계적으로 수많은 사용자들에게 서비스를 제공하고 있습니다. 이에 따라 서버 부하를 관리하고 기술적 문제를 최소화하기 위해 방대한 노력을 기울여야 합니다.
- while(1);은 클라이언트 측에서 연산이 계속되도록 하므로, 서버 측에서 온전한 JSON 응답을 구성하기 위해 시간적 여유가 생깁니다.
- 또한 이를 통해 긴급한 기술적 문제들을 예방할 수 있습니다.
- 결국, Google이 JSON 응답에 while(1);를 추가함으로써 기술적 안정성을 향상시키고 사용자들에게 계속해서 높은 품질의 서비스를 제공할 수 있게 되었습니다.
[Conclusion]
Google은 JSON 응답에 while(1);를 추가함으로써 보안, 데이터 무결성, 브라우저 호환성, 기술 문제 해결 등 다양한 이점을 얻을 수 있습니다. 이러한 결정은 Google의 서비스 품질을 향상시키고 SEO에 긍정적인 영향을 미치며, 사용자들에게 안전하고 신뢰할 수 있는 서비스를 제공하는 데에 중요한 역할을 수행합니다.

반응형
Comments