혼합 콘텐츠란 무엇인가요?

혼합 콘텐츠는 초기 HTML이 보안 HTTPS 연결을 통해 로드될 때 발생하지만 다른 리소스 (이미지, 동영상, 스타일시트, 스크립트)는 안전하지 않은 HTTP 연결을 통해 로드됩니다. 이를 혼합 콘텐츠라고 합니다. HTTP와 HTTPS 콘텐츠가 모두 로드되어 동일한 페이지를 표시하고 있고 초기 요청은 HTTPS를 통해 보안되었기 때문입니다.

안전하지 않은 HTTP 프로토콜을 사용하여 하위 리소스를 요청하면 이러한 요청은 공격자가 네트워크 연결을 도청하여 두 당사자 간의 통신을 보거나 수정하는 경로 내 공격에 취약하므로 전체 페이지의 보안이 약화됩니다. 공격자는 이러한 리소스를 사용하여 사용자를 추적하고 웹사이트의 콘텐츠를 바꿀 수 있으며, 활성 혼합 콘텐츠의 경우 안전하지 않은 리소스뿐만 아니라 페이지를 완전히 제어할 수 있습니다.

많은 브라우저가 혼합 콘텐츠 경고를 사용자에게 보고하지만, 이때는 너무 늦습니다. 안전하지 않은 요청이 이미 실행되었고 페이지의 보안이 손상되었기 때문입니다.

이러한 이유로 브라우저에서 혼합 콘텐츠를 점점 더 많이 차단하고 있습니다. 사이트에 혼합 콘텐츠가 있는 경우 이를 수정하면 브라우저가 더 엄격해짐에 따라 콘텐츠가 계속 로드됩니다.

혼합 콘텐츠의 두 가지 유형

혼합 콘텐츠의 두 가지 유형은 능동 및 수동 혼합 콘텐츠입니다.

수동적 혼합 콘텐츠는 페이지의 나머지 부분과 상호작용하지 않는 콘텐츠를 의미하므로 중간자 공격은 해당 콘텐츠를 가로채거나 변경하는 경우 취할 수 있는 조치로 제한됩니다. 수동적 혼합 콘텐츠는 이미지, 동영상, 오디오 콘텐츠로 정의됩니다.

능동적 혼합 콘텐츠는 페이지 전체와 상호작용하여 공격자가 페이지에서 거의 모든 작업을 할 수 있도록 합니다. 능동적 혼합 콘텐츠에는 브라우저에서 다운로드하고 실행할 수 있는 스크립트, 스타일시트, iframe 및 기타 코드가 포함됩니다.

수동적 혼합 콘텐츠

수동적 혼합 콘텐츠는 덜 문제가 되는 것으로 보이지만 사이트와 사용자에게 여전히 보안 위협이 됩니다. 예를 들어 공격자는 사이트의 이미지에 대한 HTTP 요청을 가로채서 이러한 이미지를 바꾸거나 교체할 수 있습니다. 공격자는 저장삭제 버튼 이미지를 바꾸어 사용자가 의도치 않게 콘텐츠를 삭제하게 할 수 있습니다. 제품 다이어그램을 음란하거나 포르노 콘텐츠로 바꾸거나 사이트의 외관을 손상하거나 제품 사진을 다른 사이트 또는 제품의 광고로 바꿀 수 있습니다.

공격자가 사이트의 콘텐츠를 변경하지 않더라도 혼합 콘텐츠 요청을 통해 사용자를 추적할 수 있습니다. 공격자는 브라우저가 로드하는 이미지 또는 기타 리소스에 따라 사용자가 방문하는 페이지와 방문하는 제품을 구별할 수 있습니다.

수동 혼합 콘텐츠가 있는 경우 대부분의 브라우저는 페이지 자체가 HTTPS를 통해 로드되었더라도 페이지가 안전하지 않다고 URL 표시줄에 표시합니다. 수동적 혼합 콘텐츠의 예가 포함된 이 데모로 이 동작을 관찰할 수 있습니다.

최근까지 수동적 혼합 콘텐츠는 모든 브라우저에서 로드되어 차단해야 많은 웹사이트가 손상되었습니다. 이제 이러한 상황이 바뀌기 시작했기 때문에 사이트의 혼합 콘텐츠 인스턴스를 모두 업데이트하는 것이 중요합니다.

가능한 경우 Chrome은 현재 수동적 혼합 콘텐츠의 자동 업그레이드를 출시하고 있습니다. 자동 업그레이드란 애셋을 HTTPS를 통해 사용할 수 있지만 HTTP로 하드코딩된 경우 브라우저에서 HTTPS 버전을 로드한다는 의미입니다. 보안 버전을 찾을 수 없는 경우 애셋이 로드되지 않습니다.

Chrome은 혼합 콘텐츠를 감지하거나 수동 혼합 콘텐츠를 자동으로 업그레이드할 때마다 DevTools의 문제 탭에 자세한 메시지를 기록하여 특정 문제를 해결하는 방법을 안내합니다.

Chrome DevTools의 문제 탭에는 특정 혼합 콘텐츠 문제 및 해결 방법에 대한 자세한 정보가 표시됩니다.

능동적 혼합 콘텐츠

능동적 혼합 콘텐츠는 수동적 혼합 콘텐츠보다 위협이 더 큽니다. 공격자는 활성 콘텐츠를 가로채 다시 작성하여 페이지 또는 전체 웹사이트를 완전히 제어할 수 있습니다. 이를 통해 공격자는 완전히 다른 콘텐츠를 표시하거나, 사용자 비밀번호 또는 기타 로그인 사용자 인증 정보를 도용하거나, 사용자 세션 쿠키를 도용하거나, 사용자를 완전히 다른 사이트로 리디렉션하는 등 페이지에 관한 모든 것을 변경할 수 있습니다.

이 위협의 심각성으로 인해 대부분의 브라우저는 이미 기본적으로 이러한 유형의 콘텐츠를 차단하여 사용자를 보호하지만 기능은 브라우저 공급업체 및 버전에 따라 다릅니다.

이 다른 데모에는 능동적 혼합 콘텐츠의 예가 포함되어 있습니다. HTTPS를 통해 예시를 로드할 때 차단되는 콘텐츠를 확인하려면 HTTP를 통해 예시를 로드합니다. 차단된 콘텐츠는 문제 탭에도 자세히 표시됩니다.

Chrome DevTools의 문제 탭에는 특정 혼합 콘텐츠 문제 및 해결 방법에 대한 자세한 정보가 표시됩니다.

혼합 콘텐츠 사양

브라우저는 선택적으로 차단할 수 있는 콘텐츠차단 가능한 콘텐츠 카테고리를 정의하는 혼합 콘텐츠 사양을 따릅니다.

사양에서 '웹의 상당 부분이 손상될 위험이 혼합 콘텐츠로 사용되도록 허용할 위험이 큰 경우' 리소스는 선택적으로 차단 가능한 콘텐츠로 간주됩니다. 이는 위에서 설명한 수동적 혼합 콘텐츠 카테고리의 하위 집합입니다.

선택적으로 차단할 수 없는 모든 콘텐츠는 차단 가능한 것으로 간주되며 브라우저에 의해 차단되어야 합니다.

최근 몇 년 동안 HTTPS 사용이 급격히 증가했으며 웹에서 확실한 기본값이 되었습니다. 따라서 이제 브라우저에서는 혼합 콘텐츠 사양선택적으로 차단 가능으로 정의된 하위 리소스 유형을 포함하여 모든 혼합 콘텐츠를 차단하는 것이 더 쉬워집니다. 이러한 이유로 Chrome은 이러한 하위 리소스에 대해 더욱 엄격한 접근 방식을 취하고 있습니다.

이전 브라우저

웹사이트의 모든 방문자가 최신 브라우저를 사용하는 것은 아닙니다. 여러 브라우저 공급업체의 여러 버전은 각각 혼합 콘텐츠를 다르게 처리합니다. 최악의 경우 이전 브라우저와 버전은 혼합 콘텐츠를 전혀 차단하지 않으므로 사용자에게 매우 안전하지 않습니다.

혼합 콘텐츠 문제를 해결하면 콘텐츠가 새 브라우저에 표시되도록 할 수 있습니다. 또한 이전 브라우저에서 차단하지 않는 위험한 콘텐츠로부터 사용자를 보호할 수도 있습니다.