ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP/HTTPS에 대하여
    2020 웹 개발자 로드맵/공통 2020. 6. 22. 19:06

     

    https://www.w3schools.com/whatis/whatis_http.asp

     

    What is HTTP

    What is HTTP? HTTP stands for Hyper Text Transfer Protocol WWW is about communication between web clients and servers Communication between client computers and web servers is done by sending HTTP Requests and receiving HTTP Responses World Wide Web Commun

    www.w3schools.com

     

    w3 schools의 글을 발췌하여 번역하였습니다. 오역이 존재할 수 있습니다.

     


     

    HTTP란 무엇인가?

    HTTP는 Hyper Text Transfer Protocol의 약자이다.

    WWW는 웹에서 클라이언트와 서버 사이의 통신에 관한 것이다.

    클라이언트 컴퓨터와 웹 서버 사이의 통신은 HTTP Requests를 보내고, HTTP Responses를 받는 것으로 이루어진다.

     

     

    World Wide Web Communication

    월드 와이드 웹(WWW)은 웹 클라이언트와 웹 서버들 사이의 통신에 관한 것입니다.

    클라이언트들은 보통 브라우저(크롬, 사파리, 엣지)이고, 다른 프로그램 혹은 장치일 수 도 있습니다.

    서버들은 보통 컴퓨터이거나 클라우드 서비스 입니다.

     

     

    HTTP Request / Response

    클라이언트와 서버 사이의 커뮤니케이션은 requestresponse들에 의해 이루어집니다.

    대략적인 흐름은 다음과 같습니다.

    1. 클라이언트(브라우저)가 HTTP request를 웹에 보낸다
    2. 웹 서버가 request를 수신한다
    3. 서버가 request를 처리하기 위해 애플리케이션을 작동한다
    4. 서버가 HTTP response (output)을 브라우저에게 리턴한다
    5. 클라이언트(브라우저)는 response를 수신합니다

     

     

    HTTP Request 사이클

    대부분의 HTTP request / response 사이클은 다음과 같습니다.

    1. 브라우저가 HTML 페이지를 요청하면, 서버가 HTML 파일을 리턴합니다
    2. 브라우저기 style 시트를 요청하면, 서버가 CSS 파일을 리턴합니다
    3. 브라우저가 JPG 이미지를 요청하면, 서버가 JPG 파일을 리턴합니다
    4. 브라우저가 JavaScript 코드를 요청하면, 서버가 JS 파일을 리턴합니다
    5. 브라우저가 데이터를 요청하면, 서버가 데이터(XML 또는 JSON 형식의 파일)를 리턴합니다

     

     

    XHR - XML Http Request

    모든 브라우저들은 XMLHttpRequest Object (XHR)을 가지고 있습니다.

    XHR은 브라우저와 서버 사이의 데이터 전송을 위해 사용되는 JavaScript object입니다.

    XHR은 웹 페이지 수정을 목적으로 데이터를 요청하고 수신하는 데 사용되기도 합니다.

     

    이름에 XML과 HTTP가 있지만, XHR은 HTTP가 아닌 다른 프로토콜과 함께 사용됩니다.

    데이터는 HTML, CSS, XML, JSON 및 일반 텍스트와 같은 다양한 타입이 될 수 있습니다.

     

    XHR 객체로 다음과 같은 일들을 할 수 있습니다.

    1. 페이지를 다시 로딩하지 않고도 웹 페이지를 업데이트(수정) 할 수 있습니다
    2. 페이지를 로드 한 뒤에도 서버에서 데이터를 요청할 수 있습니다
    3. 페이지를 로드 한 뒤에도 서버에서 데이터를 받을 수 있습니다
    4. 백그라운드에서 데이터를 서버에 보낼 수 있습니다

     

    그리고 XHR 객체는 AJAXJSON의 뼈대가 되는 기본 개념이라 할 수 있습니다.

    XHR 객체 흐름도

     

     

     


    출처 : https://www.cloudflare.com/learning/ssl/what-is-https/

     

    HTTPS란?

    HTTPS는 HTTP의 보안성을 더한 버전입니다 (HTTP + Security)

    HTTPS는 암호화된 데이터를 전송하며 은행, 이메일, 공적인 데이터 등과 같은 중요한 데이터를 전송할 때 매우 중요합니다.

    모든 웹사이트 들, 특히 민감한 데이터를 다루는 웹의 경우에는 HTTPS를 이용해야 합니다.

    Chrome과 같은 최신 웹 브라우저에서는 HTTPS를 사용하지 않는 웹 사이트가 다르게 표시됩니다. (녹색 자물쇠가 있으면 HTTPS)

     

    주소창에서 HTTPS의 사용 여부를 확인할 수 있습니다

     

     

    HTTPS는 어떻게 동작하는가?

    HTTPS는 통신을 암호화하기 위해 암호화 프로토콜을 사용합니다.

    해당 프로토콜을 Transport Layer Security(TLS, 전송 계층 보안)라고 합니다.

    또는, Secure Sockets Layer(SSL, 보안 소켓 계증)이라고도 불렸습니다.

     

    위 암호화 프로토콜은 비대칭 공용 키(public key) 기반 구조라고 알려진 것을 사용하여 통신을 보호합니다.

    이런 종류의 보안 시스템은 두 개의 다른 key를 사용하여 두 point 사이의 통신을 암호화합니다.

    1. private key : 이 key는 웹 사이트 운영자에 의해 제어되고 보관됩니다
    따라서 이 key는 웹 서버에 존재하며 public key로 암호화된 정보를 해독하는 데 사용됩니다
                     
    2. public key : 이 key는 안전한 방식으로 서버와 통신하기를 원하는 모든 사람이 사용할 수 있습니다
    public key로 암호화된 정보는 private key로만 해독할 수 있습니다

     

     

     

    HTTPS는 왜 중요한가?

    HTTPS를 사용하지 않는다면 웹사이트에 어떤 일이 발생하는가?

    HTTPS는 웹 사이트를 정보를 탈취하려는 사람들로부터 방어합니다. 기존의 HTTP 방식으로 정보를 전송할 경우,

    데이터들은 간단한 소프트웨어로도 쉽게 도청될 수 있는 데이터 패킷으로 분할됩니다.

    따라서 이런 경우에 공공 와이파이 같은 안전하지 않은 매체를 통한 통신을 사용할 때 패킷 가로채기에 매우 취약해집니다.

     

    실제로 HTTP를 통해 발생하는 모든 통신은 일반적인 텍스트로 발생하며, 간단한 프로그램만 있어도 누구나 쉽게 접근할 수 있고 따라서 취약합니다.

     

    HTTPS를 사용하면 패킷이 가로채기를 당하더라도 암호화되어 알 수 없는 문자열의 형태로 존재하게 됩니다.

    암호화 이전 문자열
    This is a string of text that is completely readable
    
    암호화 이후의 문자열
    ITM0IRyiEhVpa6VnKyExMiEgNveroyWBPlgGyfkflYjDaaFf/Kn3bo3Ofgh
    BPDWo6AfSHlNtL8N7ITEwIXc1gU5X73xMsJormzzXlwOyrCs+9XCPk63Y+z0=

     

    HTTPS가 없는 웹사이트는 인터넷 서비스 제공업체(ISP)나 다른 중개 업자가 웹사이트의 소유자의 승인 없이 웹페이지에 콘텐츠를 주입하는 것이 가능하다. 주로 ISP가 수익 증대를 위해 고객들의 웹페이지에 유료 광고를 넣는 것을 볼 수 있습니다.

     

    따라서 HTTPS는 사용자를 제 3자의 간섭으로부터 벗어나게 할 수 있습니다.

     

    사이트 제공자와 합의되지 않은 광고 주입의 예시

     

     

     

    HTTPS와 HTTP의 차이점

    엄밀하게 말하자면 HTTPS는 HTTP와 별개의 프로토콜이 아닙니다.

    단순하게 말하자면 HTTP 프로토콜에 TLS/SSL 암호화를 추가해주면 HTTPS가 됩니다.

    HTTPS는 TLS/SSL 인증서의 전송을 기반으로 발생하며, 이는 특정 제공자가 자신이 제공자임을 검증하게 됩니다.

     

    사용자가 웹페이지에 접속하게 되면, 웹페이지는 보안 세션을 시작하기 위해 공개 키가 포함된 SSL 인증서를 전송해줍니다.

    이어서 클라이언트와 서버는 SSL/TLS Handshake라는 프로세스를 거치게 됩니다. 이는 보안 연결을 생성하기 위해 백엔드 단에서 일어나는 통신입니다.

     

     

     

    웹 사이트가 HTTPS를 이용하기 위해 어떻게 해야 하나요?

    많은 웹 사이트 호스팅 제공 업체 및 기타 사업자들이 유료로 TLS/SSL 인증서를 제공하고 있습니다. 

    특정 웹 속성에 개별적으로 등록할 수 있는 더 비싼 인증서도 존재합니다.(?)

     

     

     

    '2020 웹 개발자 로드맵 > 공통' 카테고리의 다른 글

    SSH(Secure Shell) 란 무엇인가?  (0) 2020.06.20
Designed by Tistory.