혼합 콘텐츠란?

혼합 콘텐츠는 TLS로 보호되는 사이트에 안전하지 않은 HTTP 프로토콜을 통해 로드되는 요소가 포함되어 있을 때 발생합니다. 이로 인해 공격자가 악용할 수 있는 취약점이 발생합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 혼합 콘텐츠 생성 조건 설명
  • 패시브 및 액티브 혼합 콘텐츠의 구분
  • 혼합 콘텐츠 방지 방법 이해

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

혼합 콘텐츠란?

TLS(SSL라고도 함)를 사용하면 인터넷 통신이 암호화되므로 더욱 안전한 브라우징 환경이 제공됩니다.사용자는 URL에 'http://' 대신 'https://'가 있으므로 TLS 암호화 사이트를 쉽게 식별할 수 있습니다.그러나 경우에 따라 HTTPS 사이트에는 일반 텍스트 HTTP 프로토콜을 사용하여 로드되는 일부 요소도 포함될 수 있습니다.이렇게 하면 혼합 콘텐츠라고 하는 조건이 생성되며, 이는 때로는 'HTTPS를 통한 HTTP'라고도 합니다.

브라우저의 혼합 콘텐츠

콘텐츠가 혼합된 경우 사용자는 HTTPS로 보호되는 사이트에 있으므로 안전하게 암호화된 채로 연결되어 있다고 생각하지만, 페이지의 암호화되지 않은 요소로 인해 취약점이 발생하여 무단 추적, 경로상 공격 등의 악의적인 활동에 노출될 수 있습니다. 취약점의 심각도는 혼합 콘텐츠가 패시브인지 액티브인지에 따라 달라집니다.

패시브/디스플레이 혼합 콘텐츠와 액티브 혼합 콘텐츠의 차이점은?

패시브/디스플레이 혼합 콘텐츠: 이 경우 암호화되지 않은 HTTP 콘텐츠는 사이트의 나머지 페이지와 상호 작용할 수 없는 캡슐화된 요소(예: 이미지 또는 동영상)로 제한됩니다.예를 들어 공격자는 HTTP를 통해 로드된 이미지를 차단하거나 대체할 수 있지만, 페이지의 나머지 부분은 수정할 수 없습니다.

액티브 혼합 콘텐츠: 이 경우 전체 웹 페이지와 상호 작용하고 변경할 수 있는 요소 또는 종속성이 HTTP를 통해 제공됩니다.여기에는 JavaScript 파일, API 요청 등의 종속성이 포함됩니다.

액티브 혼합 콘텐츠는 패시브/디스플레이 혼합 콘텐츠보다 더 심각한 위협이 되며, 손상 시 공격자가 전체 웹 페이지를 장악하고 로그인 자격 증명과 같은 중요한 사용자 입력을 수집하거나 스푸핑된 페이지를 사용자에게 제공하거나 사용자를 공격자의 사이트로 리디렉션할 수 있습니다.

대부분의 최신 웹 브라우저에서는 개발자 콘솔에서 혼합 콘텐츠에 대한 경고가 표시될 뿐만 아니라 더 위험한 유형의 혼합 콘텐츠가 차단됩니다. 브라우저마다 고유한 규칙이 있지만, 일반적으로 액티브 혼합 콘텐츠는 차단될 가능성이 훨씬 더 높습니다.

패시브/디스플레이 혼합 콘텐츠는 위협이 덜 되지만, 공격자가 개인 정보를 손상시키고 사용자 활동을 추적할 기회를 제공합니다. 또한 많은 브라우저에서 일부 형태의 패시브 혼합 콘텐츠를 허용하고 개발자 콘솔에서 혼합 콘텐츠 경고만 사용자에게 제공하므로 많은 사용자가 혼합 콘텐츠에 노출되고 있다는 사실을 인지하지 못합니다.

Chrome의 혼합 콘텐츠 오류

구형 웹 브라우저를 사용하는 사용자는 혼합 콘텐츠를 전혀 차단하지 못할 수 있으므로 특히 취약합니다.

브라우저에서는 왜 모든 혼합 콘텐츠를 차단하지 않을까요?

안타깝게도 많은 인기 웹 사이트에서 어떤 형태로든 혼합 콘텐츠를 제공합니다. 혼합 콘텐츠를 모두 차단하는 웹 브라우저는 사용자에게 매우 좁은 버전의 웹을 제공하는 것입니다. 더 많은 웹 사이트에서 이 문제를 해결할 때까지 브라우저는 덜 심각한 형태의 혼합 콘텐츠를 일부 허용하는 방식으로 타협해야 합니다.

혼합 콘텐츠 오류는 어떻게 수정할 수 있을까요?

웹 개발자는 혼합 콘텐츠를 제거할 책임이 있습니다. 시간이 지남에 따라 웹 브라우저는 혼합 콘텐츠와 관련하여 점점 더 제한적으로 바뀌고 있으며 이러한 추세는 계속될 것입니다. 따라서 웹 브라우저에서 사이트를 계속 표시하려면 개발자가 혼합 콘텐츠를 제거해야 합니다.

혼합 콘텐츠에 대한 해결 방법은 아주 간단합니다. 웹 개발자가 페이지의 모든 리소스가 HTTPS를 통해 로드되는지 확인해야 합니다. 최신 웹 사이트에서는 여러 곳에서 여러 가지 리소스를 로드하는 경우가 많으므로 실제로는 이 작업이 까다로울 수 있습니다.

개발자가 페이지에서 혼합 콘텐츠의 모든 인스턴스를 발견할 수 있는 좋은 도구는 Google Chrome 개발자 콘솔입니다. 개발자는 소스 코드에서 'http://' URL을 사용하여 로드되는 API 호출 및 라이브러리와 같은 리소스의 인스턴스를 확인할 수도 있습니다. 경우에 따라 'http://' URL을 'https://'로 바꾸는 것만으로도 해결되기도 합니다. 하지만 먼저 해당 리소스의 HTTPS 버전을 사용할 수 있는지 확인해야 합니다. 암호화된 버전의 리소스를 사용할 수 없는 경우, 해당 리소스를 교체하거나 완전히 제거해야 합니다.