왜 구글 prepend ',' 그 동안 (1) (전용) JSON 응답을?
예를 들어, # 39 의 on / off) 가 있는 동안 here& 선반가공 스케줄표의 구글 캘린더:
while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],
['remindOnRespondedEventsOnly','true'],
['hideInvitations_remindOnRespondedEventsOnly','false_true'],
['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]
꼭 이래야겠어요 solaris. 이 생기지 않도록 하는 것은 아니지만, 모든 사람들이 'eval ()' 를 하고 있는 you& # 39; d '다음' 할 일은 정말 재장착합니다 동안 you& # 39; d 설정됩니다. Eval 이 것이 꼭 이래야겠어요 solaris. 사람들이 쓰기 방지 smartupdate 안전하다구요 JSON 구문 분석 코드입니다.
[JSON 납치] 것을 (http://haacked.com/archive/2009/06/25/json-hijacking.aspx), (주) 는 JSON 있는 보안 문제를 정식으로 고정식입니다 에서 [2011년 이후 모든 주요 브라우저] [2] 와 ecma 스크립트 5.
나 예: url mail.google.com/json? '라고 하는 등 구글은 첫 번째 메시지를 받은 편지함' action = 메일박스와 되돌려줍니다 50 json 으로 형식입니다. # 39, AJAX 요청을 할 수 없는 다른 도메인과의 이글거리 웹 사이트를 can& afaq afnor 데이터를 통해 url 을 포함할 수 있지만, 동일-출처 정책 때문에 ',' 태그이고, script> <. 를 통해 해당 url 을 방문할 쿠키, [재정의을 글로벌 어레이입니다 구성자를 또는 액세서의 방법] (http://ejohn.org/blog/re-securing-json/) 라고 할 수도 있지만 메서드입니다 때마다 객체에는 어레이나 해시보다) 속성이 설정된 읽을 수 있게 되어, json 컨텐트입니다.
이 때 ' (1),,,', '또는' & & & BLAH& & & 이 문제가 발생하지 않습니다. ajax 요청을 한 http://support. 'mail.google.com' 할 수 있으며, 전체 텍스트 내용 액세스하려면 스트립 거두어. 하지만, ',' 태그번호 삽입에서 JavaScript 처리 없이 무턱대고 실행하므로 < script>, 그 결과 무한 루프에 인컨텍스트 또는 구문 오류입니다.
이 문제를 해결하지 사이트 간 요청 위조.
[2]: https://caniuse.com/ # 성과 = es5
Json 응답을 edisclosure 것을 통해 피랍 사건.
이론적으로, HTTP 응답 컨텐트에서 의해 보호되고 어원이 같은 정책: 한 도메인의 도메인 정보가 다른 쪽 에서 페이지를 가져올 수 없습니다 (명시적으로 허용되지 않는 한).
공격자가 다른 도메인과의 요청할 수 있는 페이지를 대신하여 ',' 또는 'src = .> 스크립트입니다 < 사용하여, 예를 들어,' t get it, 태그, img> < can& # 39 대한 어떤 정보도 있지만, 그 결과 (헤더도, 컨텐츠).
따라서, 이 경우, s, t # 39 방문해야 attacker& 페이지 읽어야 couldn& # 39 에서 이메일을 gmail.com.
Json 은 JSON 컨텐츠를 사용할 때, 이 태그 요청할 수 있는 경우를 제외하고는 스크립트입니다 csetup 작업공간에서 attacker& # 39 의 Javascript 로 제어됩니다 환경. 만약 공격자가 어레이나 객체에는 구성자를 교체할 수 있는 어떤 것도 JSON 건설, 또는 다른 방법을 사용했던 객체에는 attacker& # 39 의 코드를 통과할 수 있을 것 "이라고 밝혔다.
단, JSON 실행되는 시점에 이 문제가 아니라, 당시 it& # 39 의 Javascript 로 분석되었다.
여러 가지 대응책입니다:
(1), JSON 데이터를 배치하여 '동시에' 는 JSON 데이터는 구글 기술서임을 전에 배반자들의 수행되 Javascript 로 합니다.
실제로 그 동안 전체 내용을 내려받습니다 미디어만을 합법적인 페이지, 스트립 (1) 로 구문 분석 ',', 그리고 나머지 JSON.
같은 기간 (,), 예를 들어, '페이스북' 에서 본 적이 있는 동일한 결과를 얻을 수 있습니다.
마찬가지로,,, JSON 같은 추가 전에 잘못된 토큰 ',' & & & & 수 있는지, & csetup START&, 결코 그렇지 않다.
이것은 [ 'OWASP' 권장됨 운행에서어떠한] (https://www.owasp.org/index.php/OWASP_AJAX_Security_Guidelines # Always_return_JSON_with_an_Object_on_the_outside) 는 JSON 데이터를 보호할 납치 및 덜 주는 하나.
따라서 이번 사태 이전, JSON 이 결코 Javascript 로 실행됨을 합니다.
아무 것도 유효한 객체를 JSON 둘러싸인 않을 때 Javascript 에서 유효하지 않습니다.
eval('{"foo":"bar"}')
// SyntaxError: Unexpected token :
그러나 이는 유효함 JSON:
JSON.parse('{"foo":"bar"}')
// Object {foo: "bar"}
그래서 항상 반품하십시오 합니다 객체를 JSON 의 최상위 수준에 수 없는 반면, 여전히 유효한 Javascript 기술입니까 유효함 JSON 응답을 합니다.
{} '는' 에서 언급한 것처럼 정보를 @hvd 빈 객체에는 유효함 자바스크립트, 아심과 객체에는 자체가 중요한 정보를 비워집니다 수 있습니다.
이 때문에 덜 주는 방식으로 변경, OWASP 필요 없어 클라이언트 라이브러리 및 전송 유효함 JSON. 이는 과거 혹은 브라우저 버그 잘 모를 수 있지만, 향후 이 패배를 표시할지를. 같이 데이터를 분석할 수 있는 오류 언론에 의해 @oriadam 수 있을지는 불투명하다 통해 오류 처리 방관하겠나 (예를 들면 빈다우드로네로르).
Google& # 39 의 운행에서어떠한 单捞磐啊 위해서 클라이언트 라이브러리 및 자동 드 직렬화하지 지원할 수 있는 안전한 브라우저 버그 관련해서 고려할 수 있습니다.
두 방법 모두 서버측 변화가 필요한 피하기 위해 우연히 보내는 개발자가 취약한 JSON.
별도의 파서를 사용하는 반면, JSON request 는 동일한 사이트 스어 무시하시겠습니까 '동안 (1),' 접두어입니다 파악할 수 있다.
Json 응답을 될 것이 어려울 수 있는 하나의 HTML 문서를 타사 삽입하려면 ',' 태그이고, script> <. 태그는 script> < 점에 유의해야 합니다. ',' 어원이 같은 정책 대상에서 제외된다.
< hr>;
정보기술 (it) 에서 사용되는 것을 대상으로 간단한 ',' 태그이고, script> <. (사실 이 doesn& 막을 수 있지만, t # 39 이 불쾌한.) 그거 그냥 태그 (# 39, t 이쪽요 나쁜 녀석들 can& 스크립트입니다 자체 사이트와 적극적인 세션용으로 의존할 수 있도록 했다고 페치할 너회의 컨텐트입니다.
, & 편집하십시오 mdash; 참고 주석 (및 기타 대답). 이 문제를 함께 할 수있다, 특히 '객체에는 내장현 협업공간을 전복' 와 '어레이입니다' 구성자를. 그렇지 않으면 그 때, 공격자가 코드 구문 분석, JSON 속이는 초래할 수 있는 등 변경할 수 있습니다.
이후, ',' 의 어원이 같은 정책을 면제됨 < script> 태그는 웹 보안 하는 동안 (1) ',' 세계 원하는거요 추가할 때 이를 JSON 응답을 남용 방지 ',' 태그이고, script> <.