j00r6 / SPYAIR-Fansite-Project

1 stars 1 forks source link

[BE] Docs : Session vs Token 인증방식에 대한 고민 #74

Open j00r6 opened 7 months ago

j00r6 commented 7 months ago

이유

두가지 방식에대해 고민하게된 이유는 보안상의 문제인 토큰탈취에 대해 고민하기 시작할때부터였다.

JWT를 전부 구현하고 나서 토큰탈취에 관한 정보를 처음 접했을때 당연하게도 토큰탈취에 대한 방어조치를 해야한다고 생각했다.

Token vs Session

세션 (Session)

JWT 를 처음 학습할때 세션과 비교했던 기억을 더듬어보면 세션의 최대 단점은 DB와 사용자가 늘어나면서 따라오는 확장성에 대한 문제 였던걸로 기억한다.

세션 DB 가 A와 B로 나누어 졌을경우 A에 저장된 사용자 정보를 조회하려면 세션 DB A 에서만 해당정보를 조회해야 한다. 그러므로 DB가 확장됨에따라 세션 DB 끼리 통신할수있는 기술을 추가적으로 구현해야한다는 것이다.

토큰 (Token)

JWT 는 위에서 말한 세션의 단점을 보완한 방식으로 토큰의 정보를 DB에 저장하지 않고 만료시간을 설정하여 세션의 기능을 대체하는 방식이다.

보안

하지만 보안적인 측면을 생각해봤을때 토큰이 탈취 되었을경우를 대비하여 토큰 정보를 DB나 기타 저장소에 저장하는 순간 토큰방식의 이점이 사라지고 세션방식을 사용하는것과 차이가 없게된다.

결론

결론적으로 토큰방식과 세션방식 중 어떤걸 선택할지는 본인에게 좀더 익숙한 것, 본인이 자주 사용하는 방식 을 선택하는 것이 좋은것 같다.

본인에게 익숙한 방식이라면 해당 방식의 장단점을 잘 알고있고 그것을 보완할 방법을 알고 있다면 어떤방식을 사용하던 상관없을 것 같다는 생각이 들었다.

이번에 토큰방식과 세션방식을 비교하면서 최신기술은 무조건 좋다 라는 개념을 깨고 기술의 이해도를 높이는 방식으로 공부를 해야겠단 생각이 들었다.

Ref

참조 1 - 블로그 참조 2 - 블로그 참조 3 - 블로그