본문 바로가기
frontend/WEB

[WEB] HTTP/HTTPS Methods, status code

by 신림쥐 2024. 5. 27.
728x90
반응형

 

     


     

    HTTP(HyperText Transfer Protocol)

    • 웹 서버와 클라이언트 간의 데이터 통신을 위한 프로토콜
    • 데이터 전송 과정에서 암호화가 이루어지지 않기 때문에, 전송되는 데이터가 평문으로 전송
    • 중간에 데이터를 가로채거나 엿볼 수 있는 보안 취약점이 존재
    • PORT :  80

     

    HTTPS(HyperText Transfer Protocol Secure)

    • 보안 소켓 계층(SSL/TLS) 위에서 HTTP 통신을 하는 보안된 프로토콜
    • HTTP의 보안 버전으로, SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터가 암호화되어 전송
    • 중간에 데이터를 가로채도 암호화된 데이터를 해독할 수 없어서 데이터의 기밀성과 무결성을 보장
    • PORT :  443

     

    보안이 중요한 데이터 전송에서는 HTTPS를 사용하여 데이터의 기밀성과 보안을 강화하는 것이 권장

     

     

    728x90

     

     

     

    HTTPS 적용 방법

    1. SSL/TLS 인증서 발급
      • SSL 인증서는 웹사이트의 보안을 제공하는 디지털 인증서로, 일반적으로 인증 기관(CA, Certificate Authority)에서 발급한다.
      • 인증서는 웹사이트의 도메인과 서버의 공개키를 포함하며, 클라이언트와 서버 간의 통신을 암호화하는 역할을 한다.
    2. 웹 서버(예: Apache, Nginx 등)에서 HTTPS를 설정
      • SSL 모듈 활성화: 웹 서버의 SSL 모듈을 활성화해야 합니다. 대개의 경우, 이 모듈은 기본적으로 제공되지만 구성에 따라 추가 설치가 필요할 수 있습니다.
      • 인증서 설치: 획득한 SSL 인증서를 서버에 설치해야 합니다. 일반적으로는 인증서 파일(.crt, .pem 등)과 개인 키 파일(.key)이 필요합니다.
      • 가상 호스트 설정: HTTPS를 사용할 도메인에 대한 가상 호스트 설정을 추가하거나 수정합니다. 가상 호스트 설정에서 SSL 인증서 파일 경로와 개인 키 파일 경로를 지정합니다.
    3. 포트 설정
    4. 리디렉션 설정

     

    HTTPS 적용 후 고려사항

     

    • SSL 인증서 갱신: SSL 인증서는 일정 기간마다 갱신해야 하며, 이를 잊지 않도록 자동 갱신 설정을 고려할 수 있습니다.
    • 보안 강화: HTTP Strict Transport Security (HSTS) 등의 추가 보안 메커니즘을 고려하여 보안을 강화할 수 있습니다.
    • 성능 고려: HTTPS는 암호화/복호화 처리가 필요하기 때문에 일반적으로 HTTP보다 더 많은 CPU 자원을 요구할 수 있습니다. 따라서 성능에 영향을 미칠 수 있는 사항을 고려하여 최적화 방법을 찾아야 합니다.

     

     

    HTTP/HTTPS Methods

    • HTTP 요청의 종류를 말한다.
    • HTTPS는 HTTP를 기반으로 통신을 암호화하는 방식의 차이가 있으며, HTTP와 동일한 메서드을 사용한다.

    GET

     
    • 리소스(데이터)를 받기 위함
    • URL(URI) 형식으로 서버 측에 리소스를 요청한다.

    HEAD

    • 메세지 헤더 정보를 받기 위함
    • GET과 유사하지만, HEAD는 실제 문서 요청이 아닌 문서에 대한 정보 요청이다. 즉, Response 메세지를 받았을 때, Body는 비어있고, Header 정보만 들어있다.

    POST

    • 내용 및 파일 전송을 하기 위함
    • 클라이언트에서 서버로 어떤 정보를 제출하기 위해 사용한다. Request 데이터를 HTTP Body에 담아 웹 서버로 전송한다.

    PUT

    • 리소스(데이터)를 갱신하기 위함
    • POST와 유사하나, 기존 데이터를 갱신할 때 사용한다.

    DELETE

    • 리소스(데이터)를 삭제하기 위함
    • 실제로 클라이언트에서 서버 자원을 삭제하도록 하진 않아 비활성화로 구성한다.
    • 웹 서버측에 요청한 리소스를 삭제할 때 사용한다.

    CONNECT

    • 클라이언트와 서버 사이의 중간 경유를 위함
    • 보통 Proxy를 통해 SSL 통신을 하고자할 때 사용한다.

    OPTIONS

    • 서버 측 제공 메소드에 대한 질의를 하기 위함
    • 웹 서버 측에서 지원하고 있는 메소드가 무엇인지 알기 위해 사용한다.

    TRACE

    • Request 리소스가 수신되는 경로를 보기 위함
    • 웹 서버로부터 받은 내용을 확인하기 위해 loop-back 테스트를 할 때 사용한다.

    PATCH

    • 리소스(데이터)의 일부분만 갱신하기 위함
    • PUT과 유사하나, 모든 데이터를 갱신하는 것이 아닌 리소스의 일부분만 수정할 때 쓰인다.

     

    HTTP 상태 코드

    • 10x : 정보 확인
    • 20x : 통신 성공
    • 30x : 리다이렉트
    • 40x : 클라이언트 오류
    • 50x : 서버 오류
    200번대 : 통신 성공

    상태코드이름의미

    200 OK 요청 성공(GET)
    201 Create 생성 성공(POST)
    202 Accepted 요청 접수O, 리소스 처리X
    204 No Contents 요청 성공O, 내용 없음

     

    300번대 : 리다이렉트

    상태코드이름의미

    300 Multiple Choice 요청 URI에 여러 리소스가 존재
    301 Move Permanently 요청 URI가 새 위치로 옮겨감
    304 Not Modified 요청 URI의 내용이 변경X

     

    400번대 : 클라이언트 오류

    상태코드이름의미

    <tr">409Conflict모순

    400 Bad Request API에서 정의되지 않은 요청 들어옴
    401 Unauthorized 인증 오류
    403 Forbidden 권한 밖의 접근 시도
    404 Not Found 요청 URI에 대한 리소스 존재X
    405 Method Not Allowed API에서 정의되지 않은 메소드 호출
    406 Not Acceptable 처리 불가
    408 Request Timeout 요청 대기 시간 초과
    429 Too Many Request 요청 횟수 상한 초과

     

    500번대 : 서버 오류

    상태코드이름의미

    500 Internal Server Error 서버 내부 오류
    502 Bad Gateway 게이트웨이 오류
    503 Service Unavailable 서비스 이용 불가
    504 Gateway Timeout 게이트웨이 시간 초과

     

     

    728x90
    반응형