인증/보안

SJW·2023년 4월 11일
0

인증과 인가의 차이에 대해 설명

-인증(Authentication)은 애플리케이션을 사용하는 사용자가 본인이 맞음을 증명하는 절차를 의미합니다. 사용자를 식별하기 위한 정보가 필요한데 이를 Credential(신원 증명 정보)이라고 합니다. 로그인을 위해 입력하는 패스워드 역시 여러분의 로그인 아이디를 증명하기 위한 Credential이 됩니다.
-인가 또는 권한 부여 (Authorization)은 인증이 정상적으로 수행된 사용자에게 하나 이상의 권한(authority)을 부여하여 특정 애플리케이션의 특정 리소스에 접근할 수 있게 허가하는 과정을 의미합니다. 인가 또는 권한 부여는 인증 이후에 수행되어야 하며 권한은 일반적으로 역할(Role) 형태로 부여됩니다.

세션과 쿠키 그리고 토큰 인증 방식에 대해 설명

-쿠키(cookie)란 서버가 일방적으로 클라이언트에 전달하는 작은 데이터를 말합니다. 서버에서 클라이언트에 데이터를 저장하는 하기도 하며 클라이언트에서 서버로 쿠키를 전송하는 것도 포함됩니다. 데이터를 저장한 이후 특정 조건(쿠키 옵션-Domain,Path,MaxAge or Expires, Secure, HttpOnly,SameSite)을 만족하는 경우에만 다시 가져올 수 있습니다. 그리고 주의할점은 쿠키는 오랜 시간 동안 유지될 수 있고, 자바스크립트를 이용해서 쿠키에 접근할 수 있기 때문에 쿠키에 민감한 정보를 담는 것은 위험합니다.
-세션(session)이란 사용자가 인증에 성공한 상태를 표현합니다.
1.사용자의 로그인 -> 2.서버는 해당 인증 정보를 세션 스토어에 저장 -> 3. 세션 스토어에서 session_id를 서버에 반환 -> 4.서버는 session_id를 쿠키에 담아 클라이언트에게 전달(이때 이 쿠키는 웹사이트에서 로그인을 유지하기 위한 수단으로 사용) -> 5.세션 아이디가 담긴 쿠키를 이용하여 서버에 request -> 6.서버는 session_id를 세션스토어 에서 유효함을 확인한 뒤 관련 response 와 관련된 사항을 수행 -> 7.response를 완료 -> 8.클라이언트에게 response 전달
그리고 로그아웃은 서버가 set-cookie로 클라이언트에게 쿠키를 전송할 때 세션 아이디의 키값을 무효한 값으로 갱신하며 (클라이언트의 쿠키를 임의로 삭제할 수는 없습니다.) 서버는 세션 정보를 삭제해야 합니다.
-토큰
토큰에 포함된 인증된 사용자 정보는 서버 측에서 별도의 관리를 하지 않고 생성된 토큰을 헤더에 포함해 request 전송 시, 인증된 사용자인지를 증명하는 수단으로 사용됩니다. 토큰 내에 인증된 사용자 정보 등을 포함하고 있으므로 세션에 비해 상대적으로 많은 네트워크 트래픽을 사용합니다.
기본적으로 서버 측에서 토큰을 관리하지 않으므로 보안성 측면에서 조금 더 불리한 면이 있으며, 인증된 사용자 request의 상태를 유지할 필요가 없기 때문에 서버의 확장성 면에서 유리하고, 세션 불일치 같은 문제가 발생하지 않습니다.
토큰에 포함되는 사용자 정보는 토큰의 특성상 암호화가 되지 않기 때문에 공격자에게 토큰이 탈취될 경우, 사용자 정보를 그대로 제공하는 셈이 됩니다. 따라서 민감한 정보는 토큰에 포함하지 말아야 합니다. 그리고 기본적으로 토큰이 만료되기 전까지는 토큰을 무효화시킬 수 없습니다.
CSR(Client Side Rendering) 방식의 애플리케이션에 적합한 방식입니다.

HTTP와 HTTPS 각각에 대해 설명하고둘의 차이점을 설명

-HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜입니다.

  • HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜입니다.
    차이점-
    HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있다. 하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 상대적으로 느릴수 있으며 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생하다.

0개의 댓글

관련 채용 정보