2011-08-31 5 views
0

우리는 최종 사용자가 로그인 할 것을 요구하지 않는 웹 기반 응용 프로그램을 가지고 있습니다. 애플리케이션은 Ajax를 사용하여 동일한 서버에서 호스팅되는 REST 서비스를 호출한다. 이 응용 프로그램 외에도 다른 응용 프로그램/에이전트가 REST 서비스를 호출하면 거부 될 수 있습니다.안전하지 않은 페이지에서 JavaScript로 REST 호출 보안하기

이렇게 REST API를 보호하는 가장 간단한 방법은 무엇입니까? 내 생각 엔 일종의 보안 토큰을 포함하고 HTTPS를 통해 전화를 걸 것이라고 생각합니다. 그러나 Ajax 애플리케이션이 토큰을 생성/획득/암호화하는 방법과 일반적으로 라이프 사이클이 어떻게 생겼는지에 대해서는 분명하지 않습니다.

가능한 경우 봄 보안 또는 OAuth 외부에서이 작업을 수행합니다. 또한 SSL을 통해 사용자 이름과 암호를 보내는 것으로 인증에 충분하다는 사실을 읽었습니다. 이 경우 앱은 '사용자 이름'과 비밀번호를 가지며 REST 서비스에 요청할 때마다이를 전송합니다. 그러나 클라이언트가 브라우저에서 HTML과 자바 스크립트 인 경우 어떻게 정보를 비밀로 유지할 수 있습니까?

감사합니다.

+0

가능한 [REST API/웹 서비스 보안을위한 모범 사례] (http://stackoverflow.com/questions/7551/best-practices-for-securing-a-rest-api-web-service) –

답변

0

일반적으로 이것은 불가능합니다. 누군가 당신의 자바 스크립트에서보기 소스를 할 수 있었고, 토큰을 읽고, 원하는대로 할 수있었습니다.

https가 필요하지 않습니다. 토큰의 경우 가장 쉬운 방법은 서버에서 자바 스크립트를 다운로드 할 때 쿠키를 설정하는 것입니다. 그런 다음 해당 쿠키도 AJAX 요청과 함께 전송됩니다.

이것은 실제로 안전하지 않습니다. 누구나 쿠키를보고 사용하면되지만, 할 수있는 최선의 방법입니다.

+0

http://stackoverflow.com/questions/5511589/securing-an-api-ssl-http-basic-authentication-vs-signiture에 주어진 대답은 SSL을 사용하여 쿠키를 암호화 (MITM 공격 방지)해야 함을 나타냅니다. 헤더 나 쿠키에 보안 토큰을 넣는 것이 좋습니다. 이 시나리오에서는 보안되지 않은 페이지가 처음에 안전하게 토큰을 얻는 방법을 확신하지 못합니다. – pastafarian

+1

나는 보안을 위해 무엇을하려고하는지 잘 모르겠다. 나는 너도 그렇다고 생각한다. 공격자가해야 할 일은 자바 스크립트 (https가 아닌)를 다운로드하고 쿠키가 있어야합니다. 이제 그들은 REST 서비스에 원하는 모든 것을 보낼 수있는 쿠키를 갖게되었고, 그것에 대해 아무 것도 할 수 없습니다. MITM 공격을 막는 것은 완전히 다른 일이며, "다른 응용 프로그램/에이전트가 REST 서비스를 거부하는 경우"를 확실히하기 위해 아무 것도하지 않습니다. 다른 응용 프로그램은 MITM이 필요하지 않으며, 직접 서비스를 직접 호출 할 수 있습니다. – Ariel

+1

감사. 아마 나는 그 질문에 막연하게 대답했다고 생각한다. 2 가지를 확인하고 싶습니다. 1. 아무도 브라우저에서 코드를 다운로드하고 승인 된 Ajax 지원 애플리케이션에서 오는 것처럼 서비스에 대한 호출을 가짜로 만들 수 없습니다. 2. 아무도 없습니다. 와이어를 냄새 맡고 전송 중 인증 정보를 얻을 수 있습니다. (따라서 SSL 필요) – pastafarian

관련 문제