2022-01-31 TIL

Fact

  • 바닐라 자바스크립트 스터디 미션 3 1문제
  • 그림으로 배우는 HTTP 2회독 끝

Findings

책을 읽으면서 가장 기억에 남았던 부분을 정리하자면, Http으로 하는 통신은 기본적으로 보안에 취약하다. 통신을 할 때 암호화를 하지 않기 때문이다. 그래서 서버와 클라이언트가 통신을 하는 도중 누군가가 리스폰스나 리퀘스트를 도청하거나 위장, 가로챌 수 있다. 예를 들어 악성 스크립트를 사용해서 공격하는 XSS 등에 당하기 쉽다. 그래서 나온 것이 HTTPS다. HTTPS는 HTTP에서 프로토콜 종류인 SSL를 사용해서 통신을 하는 것으로 통신 통로를 암호화된 통로로 덧씌운다고 생각하면 편하다. 보안이 좋은 대신 단점이 존재한다. 아무대로 암호화를 하는 과정이 있기 때문에 서버에 과부하를 줄 수 있고, 속도가 느리다는 점이다. 또한 HTTPS는 공개키 알고리즘 방식으로 암호화하는 방식이다.

http에는 인증 방식이 존재한다. 첫 번째 Basic, Digest, SSL 클라이언트, form 베이스 인증 방식이 있다. Basic은 보안이 취약해서 잘 사용하지 않고, Digest 인증 방식은 Basic 인증 방식에 비해 보안은 좋은 편이나 그다지 많이 사용하지 않는다고 한다. SSL 클라이언트 방식은 인증 기관에서 인증서를 구입해 클라이언트에 유지하면서 인증하는 방식인데, 인증 비용이 만만치 않아 자주 사용되는 방식이 아니라고 한다. 마지막으로 form 베이스 인증 방식은 세션과 쿠키를 이용해 로그인을 성공하면 서버에서 클라이언트한테 Http 헤더에 set-cookie라는 이름의 session-id를 담아서 보낸다. 그러면 클라이언트는 쿠키를 저장하고 인증이 필요할 때마다 서버에 쿠키를 담아서 보낸다. 그 후 서버는 인증이 올 때마다 쿠키를 확인하고 응답한다. http는 스테이트 리스 프로토콜이기 때문에 인증했다는 상태를 저장할 수 없다. 그래서 쿠키 세션을 사용한다.

  • CORS는 현재 도메인과 다른 도메인으로 리소스가 요청될 경우를 말한다. 그러나 서버는 기본적으로 CORS 방식을 제한해둔다. 이유는 특정 서버 리소스에 임의의 웹 사이트들이 request를 보낼수 있다면, 악의적으로 특정 서버의 세션을 탈취하거나 무리가 가는 행위를 할 수 있기 때문이다. 그래서 필요한 서버의 도메인이 다를 경우 따로 설정을 해줘야한다.

Feelings

  • 지하철이나 버스에서 책을 읽는 게 정말 좋다. 효율적이라고 해야 하나?
  • 역시 생각한 것을 적는 방법이 가장 기억에 오래 남는 것 같다. 시간이 날 때 HTTP 책도 포스팅해야겠다.