TIL(2023.3.8)

오늘은 개인 과제 lv2를 제출하고 코드 리뷰를 받고 알고리즘 문제 2개를 풀고 알고리즘 스터디에서 코드 리뷰를 했습니다.

TMI인데 요즘 몸이 안 좋아지는 것 같아서 한동안 운동을 했어요. :디

오늘은 매니저님에게 코드리뷰도 받고, 알고리즘 스터디에서 코드리뷰도 하고, 남의 코드도 보면서 코드를 작성할 때 가독성은 생각하지 않고 씁니다! 깨달았다…

기능만 좋으면 그만이라고 생각했는데, 앞으로 코드가 작성된다면 기능이 좋더라도 거기에 그치지 않고 가독성이 좋아지도록 코드를 바꾸는 것도 고려해보시면 좋을 것 같습니다.

사실 어떤 코드가 사람이 읽을 수 있는 코드인지는 아직 정확히 모르겠습니다.

1. 코드 가독성을 위한 오늘날의 우선 순위 맨 위!

  • 예외를 먼저 처리하십시오! 함수가 throw 예외로 끝나는 것은 좋지 않습니다.
  • if 문은 !=(else)보다 if true(==)로 시작하는 것이 좋습니다.
  • if 문을 최대한 사용하지 않을 수 있다면 if 문을 사용하지 않는 문으로 갑시다.

2. JWT로 인증/권한 부여 구현의 이점

  • 무국적: 서버 상태는 저장되지 않으므로 사용자 세션을 서버에 저장할 필요가 없습니다. 이렇게 하면 서버 로드가 줄어들고 서버 성능이 향상됩니다.
  • 확장 가능: 인증 및 권한 부여 정보는 여러 서버 간에 공유될 수 있으므로 시스템 확장이 가능합니다.
  • 안전한: JWT는 기본적으로 서명 보안을 제공합니다. 이렇게 하면 JWT가 위조되거나 변조되는 것을 방지하고 클라이언트 측에도 안전하게 저장할 수 있습니다.
  • 유연한: JWT는 커스터마이즈하여 사용할 수 있는 헤더, 페이로드 및 서명 부분으로 구분됩니다. 필요한 정보만 기록하여 불필요한 데이터 전송을 방지할 수 있습니다.

3. JWT로 인증/권한 부여 구현 시 제한 사항

  • 취약점: JWT의 암호화 방법이 약하면 보안이 손상될 수 있습니다. JWT를 저장하는 쿠키가 도난당하더라도 악의적인 사용자는 여전히 JWT로 인증할 수 있습니다.
  • 페이로드 크기: JWT는 인증 정보와 함께 추가 정보를 포함할 수 있습니다. 그러나 이렇게 하면 JWT의 크기가 늘어나 인터넷 연결이 느린 사용자의 경우 로드하는 데 시간이 오래 걸릴 수 있습니다.
  • 무국적: JWT는 상태 비저장 프로토콜입니다. 사용자 세션 정보를 저장하지 않기 때문에 사용자 자격 증명이 변경될 때 이전에 발급된 JWT를 무효화하기 어렵습니다.
  • 중앙 집중식 관리: JWT로 인증/권한 부여를 구현하려면 JWT의 발급 및 검증을 관리하는 인증 서버가 필요합니다. 이는 중앙 집중식 관리 방식이기 때문에 분산 시스템에서는 유연성이 손실될 수 있습니다.

-극-