기존에 일했던 곳은 세션으로 로그인을 구현했는데,
이력서에 하도 포폴 내 사용가능이라길래 JWT라고 하도 사람들이 그러길래 기능 구현을 해보았다.
JWT 내 만료시간, 서명, 내용이 들어간다.
그런데, 이거 완전 stateless라고해서 찾아보니 어허~
딱히 그러지도 않네...
기존에 서버의 경우 uuid를 통해 session을 만들어왔다.
그런데, 이건 뭐;;;
로그아웃 기능을 구현해보니, 탈취점이 확실히 보인다.
서버에서 cookie로 리프레쉬토큰만 저장해두는데, 로그아웃시 리프레쉬 토큰을 삭제한다.
리프레쉬는 서버에 저장하고 상대적으로 유효시간이 짧은 accesstoken을 저장하지 않게 구현했다.
로그인시 accessToken 내 만료시간 확인해서 로그인 시키는 구조인데, 이게 탈취되면 막을 방법이 없는 것.
이걸 막고자 서버에 유통기한 시간이 짧은 접근토큰을 저장하면 매번 교체시 query가 발생할테고, 서버에 부하가 가리라고 본다.
그렇다고 저장안할순 없어, 서버에 저장해서 매번 토큰 값을 조회하는 방식인데, 이건 완전히 그냥 uuid 세션 방식으로 쓰는 것 과 같다..
유효시간을 30분이나, 10분으로 잡을 경우 기존 세션방식인 매번 db쿼리를 때리는 것보단 나은 점이 있긴한데, 비용이 절감되서 좋지만,
해킹에 취약하니 세션방식으로 가야할 것 같다는 생각이든다
기술적인 의문이 들어서 찾아보니 역시 나랑 같은 내용을 적은 사람이 있더라...
해당 글 내에서 ip조회를 해서 해당 내용까지 체크하는 기능이 있는데, 그거까진 너무 복잡하고 쓰는게 맞는것 같진 않아 흐음...
뭐가 정답인지는 모르겠지만,
사이트가 보안에 취약해도 되는 곳이라면 문제가 없으나, 대부분 해커들이 헛짓거리하려고 시도하는 관계로 굳이 위험을 갖고 jwt로 시도하는 필요는 없다고 생각한다.
'코딩 > Node.js' 카테고리의 다른 글
[koa] 코아 프레임워크 학습 - 1 - 라우팅 기능적용 (0) | 2024.12.08 |
---|---|
[yarn] yarn 설치 불가 이슈(다층구조 충돌이슈) (0) | 2024.12.07 |
[NODE.JS] 라이브러리 기능 설명 (0) | 2024.10.25 |
[Nodejs] nodejs입문 코드 구성하기 (0) | 2021.09.22 |
[Nodejs]Node.js 교과서 라는 책이 있는데, 비추천한다. (0) | 2021.09.22 |