programing

'for;;; { json data }'와 같은 Ajax 호출 응답은 무엇을 의미합니까?

batch 2023. 3. 7. 21:11
반응형

'for;;; { json data }'와 같은 Ajax 호출 응답은 무엇을 의미합니까?

중복 가능성:
왜 사람들은 json 응답 앞에 "1; <dont be evil>이나 "for(;;)"와 같은 코드를 붙이는가?

페이스북 에이잭스헷헷 the for (;;);응답의 선두에 있습니다.디에에 쓰???

콜과 응답은 다음과 같습니다.

GET http://0.131.channel.facebook.com/x/1476579705/51033089/false/p_1524926084=0

응답:

for (;;);{"t":"continue"}

난 그게 통제력 때문인 것 같아.JSON-P 등이 아닌 Ajax를 통해 데이터를 강제로 취득합니다.script붙어있기 할 수 있습니다.forloop is infinite)는, 같은 오리진 정책이 유효하게 됩니다.이것에 의해, API 에의 콜을 발행할 수 있는 문서(특히, 그 API 콜과 같은 발신원이 되는 문서나, Facebook이 CORS 를 개입시켜 특별히 액세스를 허가하는 문서)를 제어할 수 있습니다.따라서 브라우저가 SOP를 강제하는 메커니즘을 통해 데이터를 요청해야 하며 데이터를 역직렬화하기 전에 해당 서문을 숙지하고 삭제해야 합니다.

즉, 데이터에 대한 액세스를 제어(유용한)하는 것입니다.

많은 에 삽입된 하지 못하는 Facebook을 사용하는 것처럼 실수인지 등 사소한 . 흔하다. HTML이나 SQL 템플릿에 삽입된 데이터를 피하지 못하는 것과 같은 단순하고 심각한 것이든, 아니면 사용하는 것만큼 복잡하고 미묘한 것이든 말이다.eval이고 거의 수 있음) ('비활성화')JSON.parse(규격에 준거하지만 보편적으로 구현되지 않은 확장 기능) "알려진" JSON 디코더 대신 이 개발자에게 베스트 프랙티스를 쉽게 적용할 수 있는 방법을 찾는 것이 중요합니다.

이 과제에 직면하기 위해 페이스북은 최근 이러한 베스트 프랙티스를 우아하게 적용하기 위해 사내 프로젝트를 총동원하고 있습니다. JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON JSON DECA DECA DECA LACEDECA LACE 는 모든 응답을 입니다.for(;;);이치노

이 때 개발자는 게으름을 피울 수 없습니다.개발자는 이 기능을 사용하면 즉시 알아차릴 수 있습니다.eval()무슨 일인지 궁금해서 실수를 깨닫고 승인된 JSON API를 사용합니다.

제공되는 다른 답변은 모두 다음 두 가지 범주 중 하나로 분류됩니다.

  1. JSONP에 대한 오해 또는
  2. 'JSON 납치'를 오해하고 있습니다.

JSONP API는 JSONP이어야 한다는 것을 합니다.myFunction({"t":"continue"})결과가 로컬 함수에 전달되도록 합니다.JSONP에 의한 것입니다.

두 번째 카테고리에 속하는 이들은 JSONP를 사용하지 않는 API에 대한 태그를 통한 사이트 간 요청 위조를 허용하여 "JSON 하이잭"의 형태를 허용하는 매우 실제적인 취약성을 인용하고 있습니다.이는 Array/Object Constructor를 변경하여 이루어집니다.이것에 의해, 서버로부터 반환되는 정보에 래핑 기능 없이 액세스 할 수 있습니다.

단, 이 경우 전혀 동작하지 않는 이유는 베어 어레이(유명한 Gmail의 예와 같은 많은 JSON API의 결과 중 하나)가 유효한 표현문이기 때문입니다.이것은 베어 오브젝트에 해당하지 않습니다.

실제로 JSON에 의해 정의된 객체의 구문(이 예에서 볼 수 있듯이 필드 이름 주위에 따옴표 포함)은 블록 구문과 충돌하므로 스크립트의 최상위 수준에서는 사용할 수 없습니다.

js> {"t":"continue"}
typein:2: SyntaxError: invalid label:
typein:2: {"t":"continue"}
typein:2: ....^

이 예제를 Object() 컨스트럭터 재매핑으로 부정 이용하려면 API가 대신 괄호 세트 내의 오브젝트를 반환해야 합니다.이것에 의해 유효한 JavaScript(그 후 유효한 JSON은 아님)가 됩니다.

js> ({"t":"continue"})
[object Object]

자, 이렇게 될 수도 있어요.for(;;);에서는 '실제로는 다른 내부 에 의해 반환되고 단, 이 "이 되기 할 필요가 있습니다.그러나 이 예에서는 이것이 '진짜'의 원인이 되기 때문에 주의할 필요가 있습니다.for(;;);이 특정 스니펫에 기재되어 있습니다.

, 아, 아.for(;;);는 무한 루프입니다(필요에 따라 Chrome의 JavaScript 콘솔을 사용하여 해당 코드를 탭에서 실행하고 태스크 매니저의 CPU 사용량이 브라우저가 탭을 종료할 때까지 루프 상태를 관찰할 수 있습니다).

나는 그것이 어떤 시키기 위해 있지 않을까 스럽다.eval또는 반환된 데이터를 실행하는 기타 기술.

JSON을 eval()

var parsedJson = eval('(' + jsonString + ')');

...에 JSON 되어 있는 이는 ...에 의해 다만, 이것은 안전하지 않은 것으로 간주됩니다.어떤 이유로든 JSON 포맷된 데이터에 JSON 포맷된 데이터 대신 실행 가능한 JavaScript 코드가 포함되어 있는 경우, 이 코드는eval()즉, 신뢰할 수 없는 서버와 대화 중이거나 신뢰할 수 있는 서버를 침해한 경우 페이지에서 임의의 코드를 실행할 수 있습니다.

그래서 이런 걸 이용해서eval()를 해석하는 되며, JSON 형식의 데이터 거부됩니다.for(;;);Facebook JSON의 스테이트먼트는 사람들이 데이터를 그렇게 해석하는 것을 방지합니다.시도하는 사람은 누구나 무한 루프를 갖게 될 것이다. Facebook은 것과 악용은 API를 벡터로 Facebook API를 .

조금 늦었습니다.TJ는 기본적으로 미스터리를 풀었습니다.하지만 이 주제에 대한 훌륭한 논문을 공유하려고 합니다.좋은 예시와 이 메커니즘에 대한 더 깊은 통찰력을 제공합니다.

이 무한 루프들은 제레미아 그로스먼이 공개한 지메일 공격으로 세간의 주목을 받은 일종의 공격인 자바스크립트 납치(Javascript hijacking)에 대한 대응책이다.

아이디어는 매우 간단하다: 많은 사용자들이 Gmail이나 Facebook에 영구적으로 로그인하는 경향이 있다.따라서 사이트를 설정하고 악의적인 사이트의 Javascript에서 개체 또는 어레이 생성자를 재정의합니다.

function Object() {
    //Make an Ajax request to your malicious site exposing the object data
}

하다를 요'를 ,<script>

<script src="http://www.example.com/object.json"></script>

마지막으로 악의적인 서버의 로그에서 JSON 개체에 대한 모든 내용을 읽을 수 있습니다.

약속한 대로, 신문 링크입니다.

이것은 CSRF 공격을 막기 위한 해킹처럼 보입니다.브라우저별로 오브젝트 작성에 접속할 수 있는 방법이 있기 때문에 악의적인 웹 사이트에서 먼저 이 작업을 수행한 후 다음 작업을 수행할 수 있습니다.

<script src="http://0.131.channel.facebook.com/x/1476579705/51033089/false/p_1524926084=0" />

전에 JSON은 JSON이 될 수 입니다.JSON은 다음과 같이 동작할 수 있기 때문입니다.eval()javascript로 지정하면 후크는 이를 검출하고 오브젝트 멤버의 냄새를 맡습니다.

이제 브라우저에서 Facebook에 로그인한 상태에서 해당 사이트를 방문하면 AJAX나 javascript 게시물을 통해 사용자의 데이터를 사용자처럼 가져와 자신의 서버로 다시 전송할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6339790/what-does-a-ajax-call-response-like-for-json-data-mean

반응형