2017-11-20 12 views
1

블로그 게시물을 만들고 내 데이터베이스에 추가 할 Express.js에 API가 있습니다. DevTools 내부의 React 앱에서 요청하면 내 JWT가 표시됩니다. 나는 내 사이트가 살아있을 때 사람들이 내 토큰을보고 사이트에서 원치 않는 게시물을 추가하도록 요청할 수 있다고 걱정합니다. 무슨 일이 벌어지고 있으며 어떻게하면 보안 오류를 예방할 수 있는지 말해주십시오.jwt : Chrome DevTools에 내 토큰이 표시되는 이유는 무엇입니까?

+0

개발자 도구에서 토큰이 표시되는 위치는 어디입니까? – MikaS

+0

@MikaS 네트워크> [나의 요청]> 헤더> 인증 –

답변

1

는 :

Token in request header

을 나는 당신이 안전 여부 궁금 무엇을 가정합니다.

일반 HTTP를 사용하는 경우 React 앱과 API 간의 연결이 암호화되지 않습니다. 그러면 replay attack이 가능합니다. ISP 또는 프런트 엔드와 API 사이에있는 다른 서버가 토큰을 읽고 나중에 토큰으로 가장 할 수 있습니다.

가장 중요한 솔루션은 암호화 된 HTTP 인 HTTPS를 사용하는 것입니다. 잠재적 인 공격자는 HTTPS를 사용할 때 토큰을 냄새 맡고 도용 할 수 없습니다. 사용자 이름, 비밀번호 등을 다룰 때는 항상 HTTPS를 사용해야합니다.

HTTPS는 무료이며 설정하기가 어렵지 않습니다. 자세한 내용은 here을 참조하십시오. 읽으려는 흥미로운 토론 here도 있습니다.

+1

좋아요, 그렇다면 HTTPS를 추가하면 인증 헤더가 표시되지 않습니까? –

+2

@NathanielFredericks 헤더가 Dev Tools에 표시되지만 패킷이 암호화되어 다른 사람이 볼 수 없습니다. – MikaS

+1

좋아,하지만 사람들이 엔드 포인트와 토큰을 가져 와서 자신의 요청을 여전히 만들 수는 없었습니까? –

3

Chrome Dev 도구에서 JWT를 볼 수 있습니다. API에서 새 블로그 게시물을 만들 때 승인 헤더로 보내고 있기 때문에 React 응용 프로그램에서 직접 요청하고 있기 때문입니다.

JWT가 민감한 경우 프런트 엔드에서 사용할 수 없어야하며 프록시처럼 작동하는 서버가 있어야하며 React 응용 프로그램의 요청을 받아야하며 JWT를 사용하여 권한 헤더로 요청을 전달해야합니다 귀하의 API에.

JWT가 누출되는 것을 피할 수는 있지만 누군가가 프록시에 요청할 수 있으며, 이는 귀하의 API로 전달됩니다.

응답 응용 프로그램에서만 프록시 요청을 수행 할 수있게하려면 들어오는 요청의 IP 주소를 확인하는 미들웨어 (자세한 내용은 here)를 만들고 React 응용 프로그램 주소와 일치하는 경우 요청을 수락합니다. 그렇지 않으면 승인되지 않은 오류가 반환됩니다.

특정 사람 만 블로그 게시물을 만들 수 있도록하려면 반응 애플리케이션에 인증을 입력해야합니다. 당신이 개발자 도구에서 헤더 창에 다음과 같이 표시됩니다 헤더에 토큰을 요청 보낼 때

+0

와우, 그게 많은 도움이되었습니다. 당신은 생명의 은인입니다. –

+0

프록시로 이것을 의미합니까? –

+0

@ NathanielFredericks 네, 그렇게하는 방법입니다. 이 기사에서 "프록시 작동 방법"부분을 보면 반응 애플리케이션이 http : // localhost : 3000/api/users를 호출하고 http : // your- server/api/users. – nicolastrres