2017-01-04 1 views
0

Slim PHP API에서 JWT를 구현하는 가장 좋은 방법에 대한 질문입니다. 진행 방법에 대해 선배/숙련 된 개발자의 지침을 찾고 있습니다.쿼리 문자열 PHP 슬림 API의 JWT JSON 웹 토큰 인증

현재 사용자가 디바이스 및 날짜 - 시간 범위와 같은 쿼리 매개 변수로 가져 오기 요청을 수행하여 데이터를 가져올 수있는 공개 API가 있습니다. 또한 인증없이 POSTing 데이터 인 장치가 있습니다. 우리는 아직 생산 단계에 있지는 않지만 분명히 나쁘다.

이 문제를 해결하기 위해 저는 첫 번째 경우, 특히 JWT를 사용하여 GET 요청에 대해 무국적 인증을 구현하는 방법을 모색했습니다. 처음에는 사용자가 로그인 한 후 웹 프론트 엔드를 통해 수행 된 토큰을 다시 설정하기위한 옵션과 함께 쿼리 문자열로 JWT를 전달하는 방법에 대해 생각했습니다. 그러나이 방법은 man-in-the-middle 공격에 좋지 않습니다. 내 토큰이 공개됩니다 (일반 http를 사용하는 경우). 모든 가져 오기/게시 요청이 https 요청으로 수행되었는지 확인하려면 충분히 안전할까요?

헤더를 통해 토큰을 전달하는 것이 더 안전한 방법 인 것처럼 보입니다. 그러나 이것에 대해 내가 이해 한 바에 따르면 사용자가 요청을 보낼 수 있도록 우편 배달부와 같은 것이 필요할 것입니다. 사용자가 브라우저를 통해서만 데이터에 액세스하기를 원하기 때문에 실제로는 옵션이 아닙니다.

답변

0

http를 사용하면 무의미합니다. https는 그렇지 않으면 사용자와 서버 사이의 모든 사람이 응답을 캐시 할 수있는 비밀번호를 보게됩니다.

토큰은 브라우저가 각 요청에 자동으로 포함하는 보안 쿠키에 저장할 수 있습니다. (JWT를위한 Slim Middleware에는이 기능이 내장되어 있습니다.) https://jwt.io/

쿠키를 사용하는 경우 쿼리 문자열에 토큰을 추가 할 필요가 없으므로 쉽게 누출 될 수 있으므로 쿼리 문자열에 토큰을 추가하지 않는 것이 좋습니다.

주 (사용자,이 또한 토큰을 누설 것입니다 서로 & 붙여 넣기 URL을 복사 사랑) : 당신이 JWT는 당신을 위해 적합한 지 확실하지 않은 경우, 체크 아웃 : http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-for-sessions-part-2-why-your-solution-doesnt-work/