혼합 콘텐츠 수정

웹사이트에 HTTPS 지원은 사이트와 사용자를 공격으로부터 보호하는 중요한 단계입니다. 혼합 콘텐츠는 이러한 보호를 쓸모없게 만들 수 있습니다. 혼합 콘텐츠란 무엇인가요?에 설명된 대로 안전하지 않은 혼합 콘텐츠는 브라우저에 의해 차단됩니다.

이 가이드에서는 기존 혼합 콘텐츠 문제를 해결하기 위한 기법과 도구를 보여줍니다. 새로운 문제가 발생하지 않도록 방지합니다

사이트를 방문하여 혼합 콘텐츠 찾기

Chrome에서 HTTPS 페이지를 방문하면 브라우저가 혼합 콘텐츠를 JavaScript 콘솔의 오류 및 경고로 표시합니다.

혼합 콘텐츠란 무엇인가요?에서 다양한 예시를 살펴보고 Chrome DevTools에서 문제가 어떻게 보고되는지 확인할 수 있습니다.

수동적 혼합 콘텐츠 예시에는 다음과 같은 경고가 표시됩니다. 브라우저가 https URL에서 콘텐츠를 찾을 수 있으면 자동으로 업그레이드한 다음 메시지를 표시합니다.

혼합 콘텐츠가 감지되고 업그레이드될 때 표시되는 경고를 보여주는 Chrome DevTools

활성 혼합 콘텐츠가 차단되고 경고가 표시됩니다.

활성 혼합 콘텐츠가 차단되었을 때 표시되는 경고를 표시하는 Chrome DevTools

사이트의 URL http://개에 이와 같은 경고가 표시되면 사이트 소스에서 수정해야 합니다 문제를 해결할 때 사용할 수 있도록 URL을 찾은 페이지와 함께 목록을 만들면 도움이 됩니다.

사이트에서 혼합 콘텐츠 찾기

소스 코드에서 직접 혼합 콘텐츠를 검색할 수 있습니다. 소스에서 http://를 검색하고 HTTP URL 속성을 포함하는 태그를 찾습니다. 앵커 태그 (<a>)의 href 속성에 http://가 있음 혼합 콘텐츠 문제가 아닌 경우가 많으며, 몇 가지 주목할 만한 예외는 나중에 다루겠습니다.

사이트가 콘텐츠 관리 시스템을 사용하여 게시된 경우 페이지가 게시될 때 안전하지 않은 URL 링크가 삽입될 수 있습니다. 예를 들어 이미지가 상대 경로가 아닌 전체 URL과 함께 포함될 수 있습니다. 이러한 문제는 CMS 콘텐츠 내에서 찾아 수정해야 합니다.

혼합 콘텐츠 수정

사이트 소스에서 혼합 콘텐츠를 찾으면 다음 단계에 따라 문제를 해결할 수 있습니다.

리소스 요청이 HTTP에서 HTTPS로 자동 업그레이드되었다는 콘솔 메시지가 표시되면 코드에서 리소스의 http:// URL을 https://로 안전하게 변경할 수 있습니다. 브라우저 URL 표시줄에서 http://https://로 변경하여 리소스를 안전하게 사용할 수 있는지 확인할 수도 있습니다. 브라우저 탭에서 URL을 열려고 합니다.

https://를 통해 리소스를 사용할 수 없는 경우 다음 옵션 중 하나를 고려해야 합니다.

  • 다른 호스트의 리소스를 사용할 수 있는 경우 이를 포함합니다.
  • 법적으로 허용되는 경우 사이트에서 콘텐츠를 직접 다운로드하고 호스팅합니다.
  • 사이트에서 리소스를 완전히 제외합니다.

문제를 해결한 후 오류를 처음 발견한 페이지를 보고 오류가 더 이상 나타나지 않는지 확인합니다.

비표준 태그 사용 주의

사이트에서 비표준 태그를 사용하지 않도록 주의하세요. 예를 들어 앵커 (<a>) 태그 URL은 혼합 콘텐츠 오류를 일으키지 않습니다. 브라우저가 새 페이지로 이동하도록 하기 때문입니다. 즉, 일반적으로 수정할 필요가 없습니다. 그러나 일부 이미지 갤러리 스크립트는 <a>의 기능을 재정의합니다. 태그를 지정하고 href 속성으로 지정된 HTTP 리소스를 페이지의 라이트박스 디스플레이에 로드합니다. 혼합 콘텐츠 문제를 일으킬 수 있습니다.

대규모 혼합 콘텐츠 처리

위의 수동 단계는 소규모 웹사이트에 적합합니다. 대규모 웹사이트나 별도의 개발팀이 많은 사이트의 경우 로드 중인 모든 콘텐츠를 추적하기 어려울 수 있습니다. 콘텐츠 보안 정책을 사용하면 이 작업에 도움이 됩니다. 를 사용하여 혼합 콘텐츠에 대해 알려주고 페이지가 안전하지 않은 리소스를 예기치 않게 로드하지 않도록 할 수 있습니다.

콘텐츠 보안 정책

콘텐츠 보안 정책 (CSP) 는 혼합 콘텐츠를 대규모로 관리하는 데 사용할 수 있는 다목적 브라우저 기능입니다. CSP 보고 메커니즘을 사용하면 사이트의 혼합 콘텐츠를 추적할 수 있습니다. 혼합 콘텐츠를 업그레이드하거나 차단하여 사용자를 보호하는 시행 정책을 제공합니다.

다음을 포함하여 페이지에서 이러한 기능을 사용하도록 설정할 수 있습니다. 서버에서 전송한 응답의 Content-Security-Policy 또는 Content-Security-Policy-Report-Only 헤더 또한 Content-Security-Policy를 설정할 수 있습니다. (Content-Security-Policy-Report-Only아님) 페이지의 <head> 섹션에 <meta> 태그를 사용하세요.

콘텐츠 보안 정책이 포함된 혼합 콘텐츠 찾기

콘텐츠 보안 정책을 사용하여 사이트에서 혼합 콘텐츠 보고서를 수집할 수 있습니다. 이 기능을 사용 설정하려면 Content-Security-Policy-Report-Only 지시어를 사이트의 응답 헤더로 추가하여 설정하세요.

응답 헤더:

Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri https://example.com/reportingEndpoint

사용자가 사이트의 페이지를 방문할 때마다 브라우저에서 콘텐츠 보안 정책을 위반하는 모든 항목에 관한 JSON 형식의 보고서를 https://example.com/reportingEndpoint 이 경우 HTTP를 통해 하위 리소스가 로드될 때마다 보고서가 전송됩니다. 보고서에는 정책 위반이 발생한 페이지 URL과 정책을 위반한 하위 리소스 URL이 포함됩니다. 이러한 보고서를 기록하도록 보고 엔드포인트를 구성하는 경우 각 페이지를 직접 방문하지 않고도 사이트의 혼합 콘텐츠를 추적할 수 있습니다.

이와 관련된 두 가지 주의사항은 다음과 같습니다.

  • 사용자는 CSP 헤더를 이해하는 브라우저에서 페이지를 방문해야 합니다. 이는 대부분의 최신 브라우저에 적용됩니다.
  • 사용자가 방문한 페이지에 대한 보고서만 제공됩니다. 따라서 트래픽이 많지 않은 페이지의 경우 전체 사이트에 대한 보고서를 가져오는 데 시간이 걸릴 수 있습니다.

콘텐츠 보안 정책 가이드에 자세한 내용과 엔드포인트 예시가 나와 있습니다.

CSP를 이용한 보고의 대안

사이트가 Blogger와 같은 플랫폼에서 호스팅되는 경우 헤더를 수정하고 CSP를 추가할 액세스 권한이 없을 수 있습니다. 대신 웹사이트 크롤러를 사용하여 사이트 전체에서 다음과 같은 문제를 자동으로 찾을 수도 있습니다. HTTPSChecker 또는 혼합 콘텐츠 검사.

안전하지 않은 요청 업그레이드

브라우저 지원

  • Chrome: 44.
  • Edge: 17.
  • Firefox: 48.
  • Safari: 10.1.

소스

브라우저가 업그레이드되고 안전하지 않은 요청을 차단하기 시작했습니다. CSP 지시어를 사용하여 이러한 애셋의 자동 업그레이드 또는 차단을 강제할 수 있습니다.

upgrade-insecure-requests CSP 지시어는 네트워크 요청을 하기 전에 안전하지 않은 URL을 업그레이드하도록 브라우저에 지시합니다.

예를 들어 페이지에 <img src="http://example.com/image.jpg">

대신 브라우저는 https://example.com/image.jpg: 혼합 콘텐츠로부터 사용자를 보호합니다.

다음 지시어와 함께 Content-Security-Policy 헤더를 전송하여 이 동작을 사용 설정할 수 있습니다.

Content-Security-Policy: upgrade-insecure-requests

또는 문서의 <head>에 동일한 지시어를 인라인으로 삽입 <meta> 요소를 사용하여 섹션을 추가하시기 바랍니다.

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

브라우저 자동 업그레이드와 마찬가지로 HTTPS를 통해 리소스를 사용할 수 없으면 업그레이드된 요청이 실패하고 리소스가 로드되지 않습니다. 이렇게 하면 페이지의 보안이 유지됩니다. upgrade-insecure-requests 지시어는 자동 브라우저 업그레이드보다 더 나아가 현재 브라우저에서 지원하지 않는 업그레이드 요청을 시도하고 있습니다.

upgrade-insecure-requests 지시어는 <iframe> 문서로 하위로 전파됩니다. 전체 페이지가 보호되도록 합니다.