2011-06-11 3 views
2

지금 타사 서버에서 JSON을 가져 오기 위해 jQuery와 JSONP를 사용하는 응용 프로그램을 작성 중입니다. 내 애플 리케이션 뒤에 주요 아이디어는 프론트 엔드 GUI를 로직과 타사 서버 프론트 엔드를 사용하는 사람이 쓸 수 있다는 것입니다.
어떤 보안 문제가이 문제에서 발생할 수 있는지 잘 모르겠지만 잠재적 인 문제로 확실히 볼 수 있습니다. 제 3 자 서버가 GUI를 실행할 내 사이트를 완전히 파괴하지 않도록하기 위해 취할 수있는 조치는 무엇입니까?jQuery에서 JSONP의 보안 문제

답변

2

JSONP는 타사 자바 스크립트를 실행하여 자바 스크립트 개체를 반환해야 함을 의미합니다. JSONP로로드 한 스크립트는 로컬 스크립트에서 수행 할 수있는 모든 작업을 수행 할 수 있으므로 두 가지 방법으로 XSS 공격 벡터입니다. JSONP 데이터를 요청한 타사가 악의적 인 사람이거나 데이터가 man-in으로 변경된 경우 - 중간 공격.

보안 연결을 통해 JSONP 만 수행하면 두 번째 유형의 공격을 피할 수 있습니다 (또는 보안되지 않은 연결을 통해 자신의 페이지가 전송되는 경우 무시할 수 있습니다.이 경우 사람이 쉽게 할 수있는 방법이 있습니다. - 중간 공격); 첫 번째 유형은 JSONP에 내재되어 있으므로 피할 수 없습니다. 소스를 신뢰할 때만 JSONP를 사용해야합니다. 그렇지 않으면 자신의 서버에 AJAX 게이트웨이를 설정하고이를 통해 JSON 데이터를 요청할 수 있습니다 (JSONP 서비스가 인증을 요구하지 않는 경우에만 작동 함). 또는 크로스 도메인 AJAX 요청을 사용합니다 (이전 브라우저에서는 작동하지 않음). JSONP 서버에서 특정 권한을 필요로 함).

0

글쎄 JSON은 실행 가능 기능이 아니라 객체를 설명합니다. JSONP이 수행하는 작업은 GET 요청의 결과를 클라이언트의 함수로 렌더링하고 실행하는 것입니다. 이렇게하면 가장 큰 보안 문제는 코드가 데이터로 수행하는 작업입니다.

+0

음, 내 코드가 데이터를 가져 와서 (희망하는대로 특정 형식으로 제공) 사용자에게 표시하고 있습니다. 사용자가 상호 작용할 때 제 3 자 서버로 데이터를 다시 보냅니다. 내 가장 큰 우려는 누군가가 일부 자바 스크립트를 실행하여 내 사이트 사용자와 관련된 기능에 액세스 할 수있게하거나 내 사이트가 어떤 방식 으로든 과부하가 걸릴 수있는 자바 스크립트를 실행할 수 있다는 것입니다. JS가 클라이언트 측으로 보는 것에 대해 큰 걱정거리) –

+0

Downvote와 의견이 없습니까? –

1

타사가 신뢰할 수없는 경우 여기에 큰 문제가 있습니다. JSONP 코드를 보내는 대신 원하는 자바 스크립트를 전송하여 사이트를 손상 시키거나 사용자의 정보를 훔칠 수 있습니다.

JSONP는 페이지에 원격 데이터를 포함하여 <script> 태그로 작동합니다. 브라우저의 보안 제한을 피하기 위해 설계되었으므로 신뢰할 수있는 출처에서만 사용해야합니다.

이 문제에 대한 클라이언트 측 솔루션 만 존재하지 않습니다.

편집 : 아, 질문을 잘못 읽었습니다. 나는 클라이언트가 JSON을받을 것이라고 생각했다.

JSONP는 자바 스크립트 함수 호출에 래핑 된 JSON 객체입니다. 일반적으로 서버에서 작업하는 경우에는 unwrap 된 JSON 객체 자체를 요청할 것입니다. 그러나 JSONP 객체를 사용하더라도 eval()을 실행하지 않는 한 자신을 해치는 것은 어렵습니다.

기존 JSON 라이브러리를 사용하고 있습니까? 그렇다면 괜찮을 것입니다.

직접 파싱 하시겠습니까? 그렇다면 eval을 피하십시오. 그러면 괜찮을 것입니다.