TIL | WIL

3/24 금 (프로젝트 기술 질답(수정중)) TIL

깊은바다거북 2023. 4. 14. 00:27

(최종 프로젝트 진행중)

오늘은 프로젝트에서 나올 수 있는 예상 기술 질문에 대한 질답 시간을 가졌다.


※ 이하는 스스로 공부하며 적어둔 노트이며 불확실한 내용이 있을 수 있습니다. 학습용으로 적합하지 않음을 유념해주세요. ※

커서 기반 페이지네이션 v.s. 오프셋 기반 페이지네이션

과 각각의 장단점

  • offset 이전/다음 페이지의 결과를 요청할 때 페이지의 번호와 크기를 지정해 이전 페이지의 마지막 결과 행의 오프셋을 사용하여 다음 페이지의 결과를 가져오는 방식이다. offset/limit을 사용한 쿼리 이용
    • 장점:
      • 페이지 단위로 구분해 유저가 페이지를 선택하고 이동가능하며 전체 페이지의 갯수를 알 수 있다.
      • 직관적이고 구현이 간단하다. (어드민 페이지 같은 단순한 경우에 적합)
    • 단점:
      • 데이터 중복, 사용자가 사용하는 동안 새로운 게시글이 생기고 사용자가 다음 요청을 진행했을 때 데이터 값이 중복이 된다. (ex>최신 데이터가 생기면 1페이지에서 본 페이지가 2페이지로 밀리기 때문에 다음 페이지를 눌렀으나 이전 페이지가 보이는 현상이 생긴다. )같은 원리로 삭제 되었을 때 특정 게시글이 조회되지 않는 현상이 있을 수도 있다.
      • offset 값이 클 경우 앞에 있는 모든 데이터를 다 읽어야 하기 때문에 뒤로 갈수록 속도가 저하된다.
      • 필요하지 않은 결과도 가져오기 때문에 리소스가 낭비될 수 있다.

JWT의 단점

  • 알고리즘 없이 암호화가 안 된 페이로드 정보가 그대로 노출된다는 점.
  • 한 번 발급되면 토큰의 유효기간을 변경할 수 없다는 점. 만료 기간이 짧으면 보안성은 높아지지만 자주 토큰을 갱신해야 하므로 부담이 될 수 있다.
  • JWT를 사용할 때 서버는 클라이언트에게 발급된 토큰만 검사해 서버 측에서 로그아웃 처리가 어렵다는 점.
  • 오래된 암호화 알고리즘(파훼가 보고된)을 개발자가 모르고 선택해서 쓸 시 보안 우려가 있다는 점.
  • 토큰 헤더에 이 토큰이 사용할 알고리즘을 명시한다는 점. 해커가 중간에 탈취해서 ‘이 토큰이 사용하는 암호화 알고리즘 = none’이라고 수정해버리면, 서명 확인 프로세스를 우회할 수 있게 된다. 즉, 이 토큰을 받은 서버 입장에서 ‘어, 얘는 처음부터 알고리즘이 none이었구나’ 하고선 서버에 저장된 암호키와 대조해 풀어보는 작업 없이 그대로 유효한 토큰이라고 통과시켜버리는 것이다.

JWT의 신뢰할 수 있는 대안, PASETO

: Platform Agnostic SEcurity TOken

: 강력한 서명 알고리즘 제공. 개발자가 알고리즘을 선택하지 않고 ‘파세토 버전’을 선택하면 된다. 최신 암호화 루트 2개만이 선택지로 활성화 및 제공된다.

파세토 버전 1: (생략)

파세토 버전 2: 더 현대적. “v2.local.암호화된페이로드.바닥글” 형태.

알고리즘 헤더가 존재하지 않아서 해커의 선택지가 줄어든다. AEAD 변조할 수 없다. 단순 로컬 대칭 키 알고리즘을 사용해도 페이로드가 (단순 인코딩이 아니라) 암호화되므로 데이터가 노출되지 않는다.

(참고: https://dev.to/techschoolguru/why-paseto-is-better-than-jwt-for-token-based-authentication-1b0c )


Uploaded by N2T