2016-11-01 1 views
0

앱을 개발 중이며 사용자 자격 증명을 암호화하는 데 필요한 시점에서 URL이 아닌 일반 텍스트로 보내야합니다. . 내가 encodeURIComponent(str); 기능을 발견하고 또한 sessions가 또 다른 가능성 것URL에 사용자 ID 해시 또는 암호화하는 방법

<a type="button" href="http://<%= host %>/play?user=<%= users.id %>" class="btn btn-primary">Create new scene</a> 

다음과 같이

내가 암호화해야 코드의 예는? 하지만이 코드를 구현하는 방법을 잘 모르겠습니다. 미리 감사드립니다.

+0

어떻게이 정보의 암호를 해독 하시겠습니까? 클라이언트 측에서이 작업을 수행하려는 경우 클라이언트가 항상 액세스 할 수 있기 때문에 먼저이 정보를 암호화하는 것이 중요하지 않습니다. 서버에서 암호 해독하는 경우이 여분의 마크 업을 모두 포함해야하는 이유는 무엇입니까? 'users.id'와'host'를 암호화 할 수 없습니까? –

답변

0

기본적으로, 당신은 두 단계를 수행해야합니다

대신이 서버 생성 비밀을 사용하여 토큰, 예를 들어, 사용한다 자격 증명
  1. 사용자에 의한 인증 (예 : OAuth, HTTP Basic 또는 맞춤 API)에 대한 응답으로 <userId, timestamp, hmac(userId + timestamp + secret)> 이를 통해 공격자가 읽을 수있는 암호를 보내지 않고도 권한을 부여 할 수 있습니다. 이 계획의 확실한 구현은 많은 프로그래밍 언어에서 사용할 수있는 JSON Web Tokens입니다.
  2. URL에 토큰을 사용하는 경우 사용자가 링크를 복사하고 공유하면 액세스 권한이 위임됨을 유의하십시오. 따라서 타임 스탬프를 사용하는 만료 시간이 너무 길어서는 안됩니다. 이 문제를 피하기 위해 쿠키를 대신 사용할 수도 있습니다. 이 경우 서버는 set-cookie: token으로 응답하며 브라우저는 각 요청의 쿠키를 동일한 도메인에 자동으로 첨부합니다.

중간에 man-in-the-middle이 자격 증명이나 토큰을 스니핑 할 수 없도록 SSL을 사용해야합니다.

관련 문제