2011-08-09 10 views
2

자바 스크립트에서 웹 서비스를 호출하는 동안 인증/보안을 추가하는 가장 좋은 방법은 무엇입니까?
내 웹 서비스가 내 응용 프로그램에서만 호출되어야하고 다른 누군가가 웹 서비스 URL을 브라우저에 복사하여 내 웹 서비스에 액세스 할 수 없도록해야합니다.자바 스크립트에서 웹 서비스 호출

처음 몇 답변부터는 불가능한 것 같습니다.
그래서 나는 그가 불가능한 단어를 모르고 있기 때문에 내 고객에게 어떻게 대답해야합니까?

~ Ajinkya.

+0

소금, 토큰, 암호? '서비스'에 액세스하는 방법에 대해 자세히 설명해 주시겠습니까? – Calum

+0

@Calumn : YUI 자동 완성을 위해 웹 서비스를 사용하고 있습니다. YUI 자동 완성에만 웹 서비스 URL을 제공합니다. – xyz

답변

1

서비스 참조를로드하는 페이지에 알려진 데이터로만 서비스를 사용할 수 있도록 동기화 기 토큰 패턴을 사용하십시오. OWASP Top 10 for .NET developers part 5: Cross-Site Request Forgery (CSRF)에서 웹 서비스를 사용하여이를 수행하는 예가 있습니다. 이것은 당신이 한 일을 성취해야합니다.

+0

좋은 소리. 확인하고 알려 드리겠습니다. – xyz

1

이것은 불가능합니다. 클라이언트가 자바 스크립트에서 웹 서비스에 액세스하도록 허용하면 클라이언트는 항상이를 수행 할 수 있습니다. 인증 요구와 함께 전송해야하는 토큰과 같은 일종의 제약 조건을 사용하여 액세스를 줄일 수 있습니다. 일회성 토큰으로 전환 할 수도 있습니다. 하지만 이렇게하면 새로운 문제가 발생합니다 (예 : 답변이 손실되면 어떻게되는지, 클라이언트 자바 스크립트는 쿼리를 다시 실행할 수 없음).

+0

@nfecher : 웹 서비스 URL을 브라우저에 복사하여 누군가가 서비스에 액세스하지 못하게 할 수 있습니까? – xyz

+0

아니, 정말로. 게다가 : 클라이언트가 웹 서비스에 전혀 액세스 할 수 없기 때문에 이러한 예방은 [뱀 기름] 일뿐입니다 (http://en.wikipedia.org/wiki/Snake_oil_%28cryptography%29). – nfechner

+0

제안 해 주셔서 감사합니다. JAVA 스크립트를 통해 사용되는 웹 서비스는 항상 모든 사람이 액세스 할 수 있습니까? – xyz

관련 문제