Study: ComputerScience(CS)/CS: Network

[Network] HTTP vs HTTPS / GET vs POST 차이점 비교

DrawingProcess 2022. 7. 19. 02:37
반응형

HTTP vs HTTPS


HTTPS 도입

HTTP는 텍스트 교환이므로, 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재합니다.
이런 보안(Security) 문제를 해결해주는 프로토콜이 'HTTPS'입니다.

HTTPS 동작순서

  • HTTP : TCP -> HTTP
    HTTPS : TCP -> SSL/TLS -> HTTP
  • HTTPS 는 HTTP 통신하는 소켓 부분을 SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는 프로토콜로 대체하는 것 뿐입니다.
    • HTTPS 의 SSL 에서는 공통키 암호화 방식과 공개키 암호화 방식을 혼합한 *하이브리드 암호 시스템을 사용합니다.
      • *하이브리드 암호: 공통키를 공개키 암호화 방식으로 교환한 다음에 이후의 통신은 공통키 암호를 사용하는 방식이다.
  • 모든 사이트가 HTTPS로 하지 않는 이유는, 암호화 과정으로 인한 속도 저하가 발생하기 때문이다.

HTTPS 통신 흐름 (하이브리드 암호 방식)

  1. 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만듭니다.
  2. 신뢰할 수 있는 *CA 기업을 선택하고, 그 기업에게 내 공개키 관리를 부탁하며 계약을 합니다.
    • *CA : Certificate Authority, 공개키를 저장해주는 신뢰성이 검증된 민간기업
  3. 계약 완료된 CA 기업은 해당 기업의 이름, A서버 공개키, 공개키 암호화 방법을 담은 인증서를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화해서 A서버에게 제공합니다.
  4. 이제 A서버는 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 건내줍니다.
  5. 클라이언트는 main.html 파일을 달라고 A서버에 요청했다고 가정하면, HTTPS 요청이 아니기 때문에 CA기업이 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 받게 됩니다.
  6. CA 기업의 공개키는 브라우저가 이미 알고있기에, 브라우저는 해독한 뒤 A서버의 공개키를 얻게 됩니다(세계적으로 신뢰할 수 있는 기업으로 등록되어 있기 때문에, 브라우저가 인증서를 탐색하여 해독이 가능한 것).
  7. 이제 A서버와 통신할 때는 얻은 A서버의 공개키로 암호화해서 요청을 날리게 됩니다.
    • 물론, HTTPS도 무조건 안전한 것은 아니며, (신뢰받는 CA 기업이 아닌 자체 인증서 발급한 경우 등)
    • 이때 HTTPS지만 브라우저에서 주의 요함, 안전하지 않은 사이트와 같은 알림으로 주의 받게 됩니다.

GET vs POST


공통점

  • *HTTP 패킷을 이용하여 클라이언트가 서버로 데이터 요청을 하는 메서드입니다.
    • HTTP 패킷: HTTP를 통해 인터넷을 통해 보내는 데이터를 가리키며, 헤더와 바디로 구성됩니다.
      • HTTP 패킷 헤더: 7가지 HTTP 메서드 방식 중 무엇을 썻는지, 클라이언트의 정보, 브라우저 정보,접속할 URL 등등 과 같은 클라이언트 정보가 들어가 있습니다.
      • HTTP 패킷 바디: 보통 비어있다. 하지만, 특정 데이터를 담아서 서버에게 요청을 보낼 수 있습니다.

GET

  • URL을 통해 모든 전송 데이터(파라미터)를 전달하기에 전달되는 값이 URL에 노출됩니다.
    • GET방식은 URL에 데이터를 붙여서 보내므로, HTTP패킷의 해더에 포함되여 서버에 요청합니다.
    • 따라서, GET 방식에서 BODY에 특별한 내용을 넣을 것이 없으므로 BODY가 빈상태로 보내집니다.
    • 그러므로, 헤더의 내용중 BODY 데이터를 설명하는 Content-Type이라는 헤더필드는 들어가지 않습니다.
  • URL형태로 표현되므로, 특정 페이지를 다른사람 에게 접속하게 할 수 있습니다.
  • URL 길이에 제한 때문에 전송할 수 있는 데이터의 양이 제한된다.
  • 전송 데이터의 형식을 맞추기 위해 인코딩이 필요할 수 있다.

POST

  • HTTP BODY에 전송 데이터를 담아서 전달하기에 전송 데이터가 노출되지 않는다.
    • POST방식은 URL에 데이터를 붙여서 보내지 않고 BODY에다가 데이터를 넣어서 보냅니다.
    • 따라서, 헤더필드 중 BODY 데이터를 설명하는 Content-Type이라는 헤더 필드가 들어가고 어떤 데이터 타입인지 명시합니다.
  • 전송 데이터의 길이 제한이 없습니다.

 

참고



반응형