[CS] 인증/ 보안 기초 문제 Day-58

cptkuk91·2022년 2월 4일
0

CS

목록 보기
96/139

HTTPS에 대한 설명

HTTPS는 최신 프로토콜의 기반입니다. HTTP를 사용한 통신은 3자가 중간에 요청을 가로 채갈 경우 데이터를 쉽게 빼낼 수 있지만, HTTPS를 사용한 통신은 암호화가 되어있기 때문에 제3자가 중간에 요청을 가로채도 쉽게 복호화할 수 없습니다.

  • 인증서를 기반으로 데이터 제공자의 신원을 보장받을 수 있다.
  • 기존 HTTP 보다 안전한 통신 프로토콜이다.
  • 공개 키 암호화(Public-key cryptography) 방식을 사용한다.

비대칭 키 암호화에 대한 올바른 설명

  • 암호화와 복호화에 서로 다른 키를 사용하는 방식이다.
  • public key는 누구에게나 공개해도 되는 키다.
  • public key로 암호화한 데이터는 그에 맞는 private key로 복호화가 가능하다.

해시 함수에 대한 설명

  • SHA-256 알고리즘을 사용했을 경우 출력값의 길이는 언제나 동일하다.
  • 해싱 알고리즘 해독은 절대 불가능한 건 아니다.
  • 해시 알고리즘은 특정 입력값에 대해 항상 같은 해시값을 리턴한다.

쿠키에 대한 설명

  • 쿠키는 MaxAge or Expires로 삭제 될 수 있다.
  • httpOnly 옵션을 사용해 Javascript의 접근을 막을 수 있다.
  • sameSite=none은 모든 요청에 대해 쿠키를 주고 받을 수 있지만 HTTPS 프로토콜을 사용하는 것이 필수적이다.
  • 요청하는 서버의 도메인, 경로, sameSite 등의 조건이 맞아떨어질 경우 같이 전송된다.

쿠키 옵션 설명

  • domain - 서버와 요청의 도메인이 일치하는 경우 쿠키 전송
  • path - 서버의 요청의 세부 경로가 일치하는 경우 쿠키 전송
  • maxage/expires - 쿠키의 유효기간 설정
  • httpOnly - 스크립트의 쿠키 접근 가능 여부 설정
  • secure - HTTPS 에서만 쿠키 전송 여부 설정
  • sameSite - 같은 사이트에서만 쿠키를 사용할 수 있게 하는 설정

쿠키 sameSite 옵션 설명

  • Lax: 사이트가 서로 달라도 GET 요청이라면 쿠키 전송이 가능하다.
  • Strict: 사이트가 서로 다르면, 쿠키 전송을 할 수 없다.
  • None: 사이트가 달라도, 모든 (GET, POST, PUT 등) 요청에 대해 쿠키 전송이 가능하다.

Session 기반 인증 방식 설명

  • 세션은 하나의 서버에서만 접속 상태를 저장한다.
  • 신뢰할 수 있는 유저인지 확인이 가능하다.
  • 쿠키에 세션 아이디가 저장된다.

CSRF 설명

  • 악성 스크립트가 담긴 사이트를 열거나 링크를 클릭했을 때 변조된 요청을 보내는 공격이다.
  • 기존의 로그인한 기록을 바탕으로 서버가 클라이언트의 요청을 믿기 때문에 발생한다.
  • sameSite 옵션을 none이 아닌 것으로 바꾸어 CSRF 공격을 막을 수 있다.

토큰 기반 인증 사용 이유

  • 서버의 부담을 덜어준다.
  • 여러 개의 서버를 사용하는 서비스를 운영할 때 좋다.
  • 앱의 확장성을 고려할 수 있다.

JWT 설명

  • Header: 어떤 종류의 토큰을 사용하는지, 어떤 알고리즘으로 암호화했는지 적혀 있다.
  • Payload: 권한 정보가 담겨 있고, 민감한 정보는 담지 않는 것이 좋다.
  • Signature: Header, Payload를 인코딩한 결과 salt값의 조합으로 암호화 되어 있다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글