2013-04-15 1 views
3

JSON 서비스 호출로 HTML 페이지를 만드는 코드가 있다고 가정 해 보겠습니다.다른 사람들이 JSON 웹 서비스를 호출하지 못하도록

다른 사용자가 소스 코드를 복사하여 붙여 넣거나 서비스를 호출하여 첫 ​​번째 사용자에 대한 결과를 얻지 못하게하려면 어떻게해야합니까?

도메인을 서비스의 매개 변수로 가져 오거나 사용자 이름이나 암호 같은 것을 얻으면 다른 도메인에 복사하여 붙여 넣을 수 있습니다.

나는 이것을 방지하는 방법이 보이지 않습니까, 아니면 제가 잘못 되었습니까?

+0

나는 당신이 당신의 html 페이지에 접근하기 위해 인증을 받아야한다고 생각한다. 그래서 당신은 인증 쿠키 또는 someting을 가지고있다. 이 쿠키를 사용하여 json 서비스를 실행/실행 중지합니다. – Alepac

+0

쿠키로 어떻게 인증합니까? 그리고 내가 인증 할 수 있다면 다른 사람도 할 수 있니? – Pabuc

+0

원시 HTTP 요청 헤더의 원본 필드를 확인하는 방법은 어떻습니까? – edocetirwi

답변

4

절대적으로이를 방지 할 수는 없지만 더 어렵게 만들 수 있으며 API를 악용하거나 해킹당한 사용자를 식별 할 수 있도록 만들 수 있습니다.

이렇게하는 방법은 인증서 (비대칭 암호화)를 사용하는 것입니다. 각 클라이언트에는 해당 클라이언트에 대해 고유 한 개인 키와 공개 키가 있습니다. 공개 키는 공개 지식 (일반적으로 서버 또는 Comodo 또는 Verisign과 같은 타사 데이터베이스에 저장 됨)입니다. 비공개 키는 클라이언트에게 비공개입니다. 서버에는 개인/공개 키도 있습니다.

클라이언트가 요청을 할 때마다, 요청이 암호화되어 서버의 공공 클라이언트의 개인 키 키를 (암호화)에 서명했다. 서버의 키는 서버 만 요청을 해독 할 수 있도록하고 클라이언트의 키는 클라이언트가 해당 요청을 암호화하여 클라이언트의 공개 키을 사용하여 완벽하게 되돌릴 수 있도록합니다.

이것은 악의적 인 사용자는 자신의 이름으로 만 요청할 수 있기 때문에 누가 헷갈 렸는지 알 수 있습니다. 또는 어떤 사용자가 침입했는지 알 수 있으므로 해당 사용자에게 알리고 계정. 이렇게하면 다른 사용자가 유선 연결을 감지하고 다른 사용자의 재생 공격 요청을 복구 할 수 없게됩니다.

보안 쿠키를 사용하여 사용자 요청을 추적하는 등 다른 방법으로이를 구현할 수 있습니다. 안전한 쿠키 구현에 대한 유용한 질문에 대한 링크를 게시 해 드리겠습니다. 이 중 일부는 다른 플랫폼 용이지만 개념은 같습니다.

구현이 시작되기 전에 많은 부분을 받아 들일 수 있습니다. do some more reading 일 것입니다.

다른 유용한 질문 :

  1. REST Web Service authentication token implementation
  2. Security When Using REST API in an iPhone Application
  3. https://stackoverflow.com/questions/15390354/api-key-alternative/15390892#15390892 링크 깨진.
+1

각 사용자에게 개인 키를 할당해야합니다. 이것은 사용자를 인증하는 것과 동일합니다 (개인 키의 유무와 상관없이). 실제로 인증 할 수있는 유일한 것입니다. Freedom_Ben이 말했듯이 응용 프로그램을 인증하는 것은 불가능합니다. 기간. 가능한 일종의 것이 아닙니다. 불가능하다. 이를 염두에두고 설계해야합니다. –

+0

@ Rob Napier 동의합니다. * 응용 프로그램 *이 인증되었다는 사고 방식에 빠지지 않는 것이 중요합니다. * 사용자 * 만 인증 할 수 있습니다. –

관련 문제