백엔드 개발 실무 지식 (4)

유기훈·2025년 8월 5일

주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 최범균

8장 실무에서 꼭 필요한 보안 지식

인증과 인가

토큰 송수신

  • 클라이언트는 서버에 토큰을 전송할 때 쿠키 또는 헤더를 사용한다.
  • 웹 사이트는 주로 쿠키 방식을 사용한다.
  • 앱에서 서버와 통신할 때는 헤더를 사용한다.

인가와 접근 제어 모델

  • RBAC는 역할별로 실행 가능한 기능 집합을 할당하고, 사용자에게는 역할을 부여한다.
  • RBAC를 사용할 때는 역할의 설계와 관리에 신경 써야 한다.
  • 속성 기반 접근 제어(ABAC) 모델은 예를 들어 사용자의 IP 주소에 따라 특정 기능의 접근을 허용하거나 제한할 수 있는 방식이다.

데이터 암호화

단방향 암호화

  • 동일한 해시 값을 갖는 서로 다른 데이터를 찾기 어려울 때 해시 함수는 충돌 저항성을 갖는다.
  • 해시 함수의 생성 결과가 길수록 충돌 날 가능성이 줄어든다.
  • 단방향 암호화는 해시 함수로 생성한 해시 값이 같다면 두 데이터가 같다고 간주한다.
  • 단방향 암호화는 원본 데이터로 복호화할 수 없다.
  • 해시 알고리즘은 레인보우 테이블을 참고하여 원본 유추가 가능하다.
  • 해시 알고리즘은 취약점을 보완하기 위해 salt를 사용한다.
  • 솔트는 임의의 값이며, 암호화할 때 솔트를 함께 사용하면 솔트 값에 따라 결과 해시 값이 달라진다.

양방향 암호화

  • 먼저 대칭 키 암호화는 암호화와 복호화할 때 동일한 키를 사용한다.
  • 키 소유자는 공개 키와 개인 키 쌍을 생성한 뒤, 데이터 송신자에게 공개 키를 제공한다.
  • 공개 키로 암호화한 데이터는 개인 키로만 복호화할 수 있기 때문에, 공개 키가 유출되더라도 암호화한 데이터를 복호화할 수 없다.

HMAC을 이용한 데이터 검증

  • 게임이 끝난 뒤에 포인트를 지급하기 위해 게임 결과를 받는 API가 있다고 해보자. 이 API는 사용자에 의해 조작되었는 지 검증이 필요하다.
  • 데이터 검증이 필요한 경우에 HMAC을 이용할 수 있다.
  • 메시지 발신자는 메시지를 비밀 키로 해싱해서 생성한 MAC을 원본 메시지와 함께 수신자에게 전송한다. 수신자는 비밀 키로 똑같이 원본 메시지를 해싱한 다음 발신자가 보낸 MAC과 동일한지 확인한다.

데이터 노출 줄이기

  • 다수의 고객 정보를 쉽게 획득하지 못하게 만드는 방법으로는 '마스킹'이 있다.
  • 서버에서 클라이언트로 응답하는 데이터 자체가 마스킹 되어야 한다.
  • 로그 메시지도 신경을 써야 한다. 로그 메시지에 비밀번호와 같은 데이터가 남으면 안된다.

비정상 접근 처리

비정상 접근으로 판단하는 대표적인 예 3가지
1. 평소와 다른 장소에서 로그인 함
2. 평소와 다른 기기에서 로그인 함
3. 로그인에 여러 차례 실패함

  • 동일한 URL이나 API를 반복해서 접근하는 것도 부정 사용으로 간주할 수 있다.
profile
개발 블로그

0개의 댓글