초기 HTML이 안전한 HTTPS 연결을 통해 로드될 때 페이지에 혼합 콘텐츠가 포함되지만 다른 리소스 (예: 이미지, 동영상, 스타일시트, 스크립트)는 안전하지 않은 HTTP 연결을 통해 로드됩니다. 이 이름은 한 페이지에 HTTP와 HTTPS 콘텐츠가 혼합된 것을 나타냅니다.
안전하지 않은 HTTP 프로토콜을 사용하여 하위 리소스를 요청하면 페이지의 보안이 약화됩니다. 이러한 요청은 공격자가 네트워크 연결을 도청하여 두 당사자 간의 통신을 보거나 수정하는 경로 내 공격에 취약하기 때문입니다. 공격자는 이러한 리소스를 사용하여 사용자를 추적하고 웹사이트의 콘텐츠를 바꿀 수 있으며, 활성 혼합 콘텐츠의 경우 안전하지 않은 리소스뿐만 아니라 페이지를 완전히 제어할 수 있습니다.
많은 브라우저가 혼합 콘텐츠 경고를 사용자에게 보고하지만 보고는 너무 늦은 경우가 많습니다. 안전하지 않은 요청이 이미 실행되었고 페이지의 보안이 손상되었기 때문입니다.
대부분의 브라우저는 보안상의 이유로 혼합 콘텐츠를 차단합니다. 페이지가 계속 올바르게 로드되도록 안전하지 않은 콘텐츠 요청을 보안 콘텐츠로 변경하세요.
혼합 콘텐츠의 두 가지 유형
혼합 콘텐츠에는 활성 및 수동적이라는 두 가지 유형이 있습니다.
이미지, 동영상, 오디오를 비롯한 수동적 혼합 콘텐츠는 페이지의 나머지 부분과 상호작용하지 않으므로 중간자 공격은 해당 콘텐츠를 가로채거나 변경하는 경우 할 수 있는 작업이 제한됩니다.
활성 혼합 콘텐츠는 페이지 전체와 상호작용합니다. 여기에는 스크립트, 스타일시트, iframe 및 브라우저에서 다운로드하고 실행할 수 있는 기타 코드가 포함됩니다. 활성 혼합 콘텐츠에 대한 공격을 통해 공격자는 페이지에 거의 모든 작업을 할 수 있습니다.
수동적 혼합 콘텐츠
수동적 혼합 콘텐츠는 활성 혼합 콘텐츠보다 위험은 적지만 그 위험은 여전히 존재합니다. 예를 들어, 공격자는 다음을 수행할 수 있습니다.
- 사이트의 이미지에 대한 HTTP 요청을 가로채고 해당 이미지를 바꾸거나 바꿉니다.
- 사용자가 혼동하게 하거나 저장하려는 콘텐츠를 삭제할 수 있도록 버튼의 이미지를 바꿉니다.
- 사이트의 이미지를 포르노 콘텐츠로 교체합니다.
- 제품 이미지를 다른 제품에 대한 광고로 교체하세요.
공격자가 사이트의 콘텐츠를 변경하지 않더라도 혼합 콘텐츠 요청을 통해 사용자를 추적할 수 있습니다. 또한 브라우저에서 로드하는 이미지 또는 기타 리소스에 따라 사용자가 방문하는 페이지와 방문하는 제품도 파악할 수 있습니다.
수동 혼합 콘텐츠가 있으면 대부분의 브라우저는 페이지 자체가 HTTPS를 통해 로드되더라도 주소 표시줄에 페이지가 안전하지 않다고 표시합니다. 이 데모에서 이 동작을 볼 수 있습니다.
최근까지 수동적 혼합 콘텐츠는 차단 시 많은 웹사이트가 손상되었기 때문에 모든 브라우저에서 로드되었습니다. 이제는 이러한 방식이 바뀌기 시작했기 때문에 사이트의 혼합 콘텐츠 인스턴스를 모두 업데이트하는 것이 중요합니다.
경우에 따라 Chrome은 수동 혼합 콘텐츠를 자동으로 업그레이드합니다. 즉, 애셋이 HTTP로 하드 코딩되어 있지만 HTTPS를 통해 사용할 수 있는 경우 브라우저에서 HTTPS 버전을 로드합니다. 보안 버전이 없으면 애셋이 로드되지 않습니다.
Chrome은 혼합 콘텐츠를 감지하거나 수동 혼합 콘텐츠를 자동으로 업그레이드할 때마다 DevTools의 문제 탭에 자세한 메시지를 기록하여 특정 문제 해결에 관한 조언을 제공합니다.
능동적 혼합 콘텐츠
능동적 혼합 콘텐츠는 수동적 혼합 콘텐츠보다 위협이 더 큽니다. 공격자는 활성 콘텐츠를 가로채서 다시 작성하여 페이지 또는 전체 웹사이트를 완전히 제어할 수 있습니다. 이로 인해 다른 콘텐츠 표시, 사용자 비밀번호 또는 기타 로그인 사용자 인증 정보 도용, 사용자 세션 쿠키 도용, 사용자를 완전히 다른 사이트로 리디렉션하는 등 페이지의 모든 측면을 변경할 수 있습니다.
활성 혼합 콘텐츠의 위험이 매우 높기 때문에 대부분의 브라우저는 사용자를 보호하기 위해 이미 이러한 유형의 콘텐츠를 기본적으로 차단하지만 동작은 브라우저 공급업체와 버전마다 다릅니다.
이 데모는 활성 혼합 콘텐츠의 예를 보여줍니다. HTTPS를 통해 예시를 로드할 때 차단되는 콘텐츠를 확인하려면 HTTP를 통해 예시를 로드합니다. 차단된 콘텐츠는 DevTools의 문제 탭에도 자세히 설명되어 있습니다.
혼합 콘텐츠 사양
브라우저는 선택적으로 차단할 수 있는 콘텐츠 및 차단 가능한 콘텐츠 카테고리를 정의하는 혼합 콘텐츠 사양을 따릅니다.
'웹의 상당 부분이 손상될 위험이 혼합 콘텐츠로 사용되도록 허용할 위험이 큰 경우' 리소스는 선택적으로 차단 가능한 콘텐츠로 간주됩니다. 수동적 혼합 콘텐츠의 하위 집합입니다.
선택적으로 차단할 수 없는 모든 혼합 콘텐츠는 차단 가능한 것으로 간주되며 브라우저에 의해 차단되어야 합니다.
최근 몇 년 동안 HTTPS 사용이 급격히 증가했으며 웹에서 확실한 기본값이 되었습니다. 따라서 이제 브라우저에서 혼합 콘텐츠 사양에 선택적으로 차단 가능으로 정의된 하위 리소스 유형을 포함하여 모든 혼합 콘텐츠를 차단하는 것이 더 쉬워집니다.
이전 브라우저
이전 버전의 브라우저를 사용하는 방문자도 있을 수 있습니다. 여러 공급업체의 브라우저 버전마다 혼합 콘텐츠를 다르게 처리합니다. 최악의 경우 이전 브라우저와 버전은 혼합 콘텐츠를 전혀 차단하지 않으므로 사용자에게 안전하지 않습니다.
모든 리소스를 안전하게 로드하고 혼합 콘텐츠 문제를 해결하면 콘텐츠가 표시되고 이전 브라우저에서는 차단하지 않을 수 있는 위험한 콘텐츠로부터 사용자를 보호할 수 있습니다.