4

ASP.NET 웹 API 2에서 클레임 기반 인증을 사용하려고합니다. 내 응용 프로그램에서 OAuth 2.0을 구현하고 베어러 토큰을 사용하는 VS 2013 템플릿을 사용합니다 JWT). 내 질문은 무엇입니까 - 클라이언트 측 토큰을 유지하는 가장 좋은 방법은 무엇입니까. 그의 책에서 Badrinarayanan Lakshmiraghavan은 무기명 토큰을클라이언트 측에서 무기 토큰을 유지하는 방법

과 같이 설명합니다. 무기명 토큰은 finders, keeper와 같습니다.

따라서 쿠키에 저장하는 것이 안전할까요? 쿠키를 훔칠 사람이 응용 프로그램에 대한 모든 액세스 권한을 갖게된다는 것을 의미하지 않습니까? 반면에 쿠키에 저장하기 전에 해시를 사용하여 토큰을 암호화 할 수 있습니다. 충분히 안전할까요? 다른 대안이 있습니까? 나는 stackoverflow에 비슷한 질문을 묻는 몇 가지 질문을 본 적이 있지만, 만족스러운 답변을 찾지 못했습니다.

답변

5

쿠키에 저장하는 것이 안전합니까?

번호 쿠키는 쿠키가 모든 요청을 자동으로 제출됩니다 이후 는 또한,이 CSRF에 취약 할 수있는 XSS 공격 (및 기타 벡터)를 통해 도난 될 수있다.

난 그냥이 또한 작동하지 않습니다 쿠키

에 저장하기 전에 해시를 사용하여 토큰을 암호화 할 수 있습니다. 해싱은

다른 대안이 있는가 (암호 해독은 허용하지 않습니다 또한 등)를 암호화하는 안전한 방법 하지입니까?

기본적으로, 당신은 보안 연결을 통해 사용자에게 토큰을 제공해야합니다 (HTTPS)하지만 수동으로 (다시 HTTPS를 통해) 보안 기본적으로

+0

는 '당신이 사용자에게 토큰을 제공해야합니다 위해 제출해야 보안 연결 (HTTPS)을 통해 연결되지만 보안을 위해 수동으로 제출해야합니다 (다시 HTTPS를 통해) '. 아직도 그 질문에 완전히 대답하지 않습니다. HTTPS를 사용하는 한 쿠키를 사용하는 것이 좋습니다. – Bartosz

+0

아니요. 쿠키는 XSS 공격을 통해 쉽게 도난 당할 수 있습니다. 쿠키는 웹 요청시 자동으로 제출되므로 교차 사이트 요청 위조의 위험이 있습니다. 자세한 내용은 (https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29)를 확인하십시오. – akirilov

+0

웹 API 2의 무기명 토큰에 대한 기본 시간 간격은 14 일입니다. 그러면 클라이언트 측에서이 토큰을 어떻게 보존합니까? – Bartosz