2011-03-08 2 views
1

Android/iOS (및 이후 Windows Phone)를 대상으로하는 웹 응용 프로그램 (HTML 및 Javascript로 개발 됨)에 제 3 자 서비스와의 통합을 추가하려고합니다. 따라서 나는 모든 "현대적인"특징에 접근 할 수 있습니다. 이 타사 서비스는 자격 증명이 필요하며 GET 매개 변수를 통해 제어됩니다.
예를 들어 요청 URL은 "http://www.example.org/foo?username=user & password = 1234"와 같이 표시 될 수 있습니다.Javascript를 사용하여 로그인 자격 증명을 저장하는 방법은 무엇입니까?

해시 된 암호를 허용하도록 타사 서비스를 변경하면 액세스 할 수 없어 옵션이 없습니다.

사용자가 서비스를 사용하거나 응용 프로그램을 시작할 때마다 사용자 이름과 암호를 입력하지 않으므로 어떻게 든 자격 증명을 저장하려고합니다.

이제 가장 좋은 방법은 무엇일까요?
저는 실제 "보안"이 여기에있는 환상임을 알고 있지만 잘못된 길을 남겨 두어 불필요한 위험에 노출시키지 않으려합니다.

는 이미 여러 가지 방법

  • 일반 쿠키에 대한 생각 : 가장 간단한 방법 - 그것은이 시나리오에 충분한 을 "보호"는 무엇입니까?
  • DOM 저장소 : 의 쿠키와 다른 점?
  • 암호화 된 쿠키 다음 자격 증명을 암호화 할 것이지만, 의 소스 코드를 페이지에보고하거나 디버깅 할 때 쉽게 키 을 찾을 수 있습니다.

어느 것이 좋습니까? 더 좋은 방법이 있습니까?
쉽게 금이 간다면 실제로 가치가있는 encrpytion으로 귀찮게합니까?

답변

2

모든 방법이 나쁘고 안전하지 않습니다. 따라서 사용자 이름과 암호를 get param으로 보내고 있습니다. https를 통해서도 실행할 수 있습니까?

이렇게하는 방법은 일반적으로 사용자 이름/암호를 저장하는 것이 아니라 사용자 세션을 식별하는 GUID/해시를 저장 한 다음 해당 세션을 유지하게하는 것입니다.

그런 식으로 다른 사람이 세션에 액세스하더라도 사용자 이름/암호가 없습니다. 이 중 일부는 기존 암호를 제공하지 않는 한 암호를 변경할 수 없습니다.

절대적으로 사용자 이름/암호를 전송해야하는 경우 백엔드 프록시를 통해 타사 서비스에 연결하고 인증하십시오.

+0

예 - 타사 서비스는 https를 사용합니다. 그러나, 나는 그것을 바꿀 수 없다 - 나는 세션 식별자 만 저장하는 것을 선호한다. 하지만 그건 불가능합니다. – Matthias

+0

@ winSharp93 : 인증에 백엔드 프록시를 사용하는 경우 사용자 이름/암호를 클라이언트에 노출 할 필요가 없습니다. –

+0

불가능합니다. 나는 내 서버에 평범한 HTML/Javascript 파일 만 업로드 할 수있다. – Matthias