85일차 - 인증/보안

김민찬·2021년 8월 2일
0

취업으로의 여정

목록 보기
86/196

코딩을 공부한 이후 부터 궁금한 것이 있었다. 과연 웹사이트를 만들때 로그인은 어떻게 구현 할까라는 문제였다.

그 질문에 대한 답이 오늘부터 공부하는 인증 그리고 보안이다.

HTTPS

HTTPS(Hyper Text Transfer Protocol Secure Socket layer)는 HTTP protocol의 암호화된 버전이다.
클라이언트와 서버 간의 모든 커뮤니케이션을 암호화 하기 위해 SSL이나 현재는 대체된 TLS를 사용한다.

HTTP는 MITM(중간자 공격)에 매우 취약하다.

중간자 공격 - 두 사람이 서로 통신을 주고 받는데, 중간에 제 3의 인물이 끼여서 데이터를 중계한다면, 이 제 3자는 그 내용을 모두 알 수 있다. 또한, 중간에서 데이터를 위/변조 하면 두 사람에게 서로 잘못된 정보를 전달하게 만들 수도 있다.
출처: 중간자 공격 - 나무위키

이 공격법을 방어하기 위해서 만들어진 것이 TLS통신이다.
정확한 키로 복호화 하기전까지는 어떤 내용인지 알 수 없다.

인증서

HTTPS의 특징 중 하나는 인증서 정보를 확인할 수 있다는 것이다.
디지털 인증서라고도 하는데, 브라우저 또는 사용자의 컴퓨터와 서버 또는 웹사이트 간에 암호화된 연결을 수립하는 데 사용된다.
위와 같은 경고를 보여주면서 인증된 CA(Certificate Authority, 인증기관)가 발급한 인증서를 이용하여 데이터를 제공하는 안전한 서버를 사용하게 유도한다.

쿠키는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다.
브라우저는 그 데이터 조각들을 저장해 놓고, 동일한 서버에 재 요청시 저장된 데이터를 함께 전송한다.
쿠키는 요청이 동일한 브라우저에서 왔는지 아닌지 판단할때 사용한다.
이를 이용해서 사용자의 로그인 상태를 유지할 수 있다.
출처: MDN-Cookie

세션이란 웹사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미한다.
사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지 세션이라고 한다.
쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장하지만, 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고,
세션의 키값만을 클라이언트 측에 남겨둔다.
브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장된 데이터를 사용하게 된다.
세션은 보안에 취약한 쿠키를 보완해주는 역할을 하고 있다.
출처:TCPschool - 세션

위 설명을 보면 세션을 이용해서 모든 정보를 저장하는 것이 좋아보지만, 세션은 하나의 서버에서만 접속 상태를 가지므로 분산에 불리하다.
그리고 서버의 메모리에 세션 정보를 저장함으로 메모리의 일정 공간을 사용해서 가용 메모리가 줄어든다.

만약 쿠키와 세션 그리고 캐시의 차이가 궁금하다면 아래 동영상을 보면 많은 도움이 될 것이다.

profile
두려움 없이

0개의 댓글