본문 바로가기
개발새발/네트워크

[네트워크] HTTP와 HTTPS

by yonikim 2025. 2. 8.
728x90

 

출처:  elegantthemes

 

HTTP와 HTTPS의 차이점은 무엇인가?

대표적인 기술면접 질문 중 하나로 간략하게 대답하자면,

 

HTTP는 웹 브라우저와 서버 간에 데이터를 주고 받는 프로토콜로 데이터를 암호화하지 않고,

HTTPS는 HTTP에 SSL/TLS를 추가하여 데이터 전송을 암호화하고 데이터의 기밀성과 무결성을 보장한다. 

특징 HTTP HTTPS
보안 암호화 없음 (평문 전송) 암호화 적용 (SSL/TLS)
신뢰성 낮음 높음 (인증서 필요)
속도 빠름 초기 연결을 느리지만 최적화 가능
포트 80 443
사용 사례 일반적인 웹 사이트, 테스트 환경 금융, 쇼핑몰, 로그인 시스템 등 보안이 중요한 서비스

 

 

"POST 요청하면 안전한거 아니에요?"

GET 요청은 데이터를 쿼리 스트링(Query String)으로 전달하기 때문에, 브라우저 주소창이나 로그에 남을 수 있다.  따라서 아래와 같이 요청하면 네트워크 로그나 브라우저 히스토리에 아이디와 비밀번호가 남아버리는 문제가 발생한다.

GET /login?username=admin&password=1234 HTTP/1.1

 

 

POST 요청은 데이터를 Body 에 담아서 보내므로 URL 에 직접 포함되지 않기 때문에, 노출되는 위험은 줄어든다. 

POST /login HTTP/1.1
Content-Type: application/json

{
  "username": "admin",
  "password": "1234"
}

 

하지만 POST 도 안전하지 않다! 

1. 평문(Plain Text)으로 전송되면 노출 위험

  • HTTP를 사용할 경우, POST 요청의 Body도 암호화되지 않고 그대로 전송된다. 즉, 네트워크에서 패킷을 가로채면 데이터를 확인할 수 있다. 
  • 따라서, HTTPS를 사용하지 않으면 POST 도 안전하지 않다는 점을 기억해야 한다. 

2. 네트워크 패킷 스니핑(Packet Sniffing) 위험

  • 중간자 공격(MITM, Man-in-the-Middle Attack)으로 POST 데이터도 가로채질 수 있다. 
  • HTTPS를 사용하면 TLS 암호화를 통해 데이터가 보호되지만, HTTP를 사용하면 위험하다. 

3. CSRF(Cross-Site Request Forgery) 공격 가능성

  • POST 요청은 보안이 강하다고 생각되지만, CSRF 공격이 발생하면 사용자의 의도와 무관하게 요청이 실행될 수도 있다. 
  • 예) 악성 사이트에서 사용자의 인증 정보를 활용해 특정 사이트에 POST 요청을 보내는 경우 
  • 이를 방지하려면 CSRF 토큰을 사용해야 한다.

4. 브라우저 캐싱 위험

  • GET 요청은 브라우저에 의해 캐싱될 수 있어 민감한 정보가 저장될 위험이 있지만, 일부 설정이 잘못되면 POST 요청도 캐싱될 가능성이 있다.
  • 따라서 `Cache-Control: no-store` 헤더를 추가해 보호해야 한다.

HTTPS를 반드시 사용해야 하는 이유 

1. 데이터 암호화

🚫 문제점 (HTTP 사용 시) 

  • HTTP는 데이터를 평문(Plain Text)으로 전송하기 때문에, 네트워크에서 패킷을 가로채면 쉽게 내용을 볼 수 있다.
  • 로그인 정보, 카드 번호, 개인정보 등이 그대로 노출될 위험이 크다.

✅ HTTPS 사용 시 

  • TLS를 통해 요청과 응답의 모든 데이터를 암호화하여 보호한다. 
  • 제3자가 데이터를 가로채더라도 암호화되어 있어 해독할 수 없다.

📌 즉, HTTPS는 네트워크를 통한 데이터 유출을 막아준다. 

 

2. 데이터 무결성

🚫 문제점 (HTTP 사용 시) 

  • HTTP를 사용하면 중간자 공격(MITM)이 가능하며, 공격자가 데이터 내용을 변조할 수도 있다.
  • 예를 들어, 공격자가 웹사이트에서 다운로드하는 파일을 악성 코드가 포함된 파일로 바꿔치기할 수 있다.

✅ HTTPS 사용 시 

  • TLS 암호화를 적용하면 데이터 위/변조를 방지할 수 있다.
  • 클라이언트와 서버가 주고받은 데이터가 신뢰할 수 있는 상태임을 보장한다.

📌 즉, HTTPS는 데이터가 변조되지 않도록 보호한다.

 

3. 사용자 신뢰 및 피싱 방지

🚫 문제점 (HTTP 사용 시) 

  • HTTP 사이트는 브라우저에서 "보안되지 않음(Not Secure)" 경고가 표시된다.
  • 사용자는 이런 사이트에서 로그인, 결제 등의 작업을 꺼리게 된다. 
  • 또한, HTTP를 사용하는 웹사이트는 피싱 사이트로 악용될 가능성이 높다.

✅ HTTPS 사용 시 

  • 웹사이트가 신뢰할 수 있는 기관(CA)에서 발급한 SSL/TLS 인증서를 사용해야 한다.
  • 브라우저에 자물쇠 아이콘이 표시되며, 사용자는 안심하고 웹사이트를 이용할 수 있다.
  • 피싱 사이트는 보통 정식 SSL 인증서를 받지 못하기 때문에, HTTPS를 사용하면 피싱 위험을 줄일 수 있따.

📌 즉, HTTPS는 사용자의 신뢰를 높이고 피싱 사이트를 식별하는 데 도움을 준다.

 

 

 

728x90