혼합 콘텐츠 검사
HTTPS 페이지 안의 http(비보안) 리소스를 찾아 경고합니다.
혼합 콘텐츠(Mixed Content) 검사는 HTTPS로 제공되는 페이지가 내부에서 http://로 시작하는 이미지·스크립트·스타일시트 등 비보안 리소스를 불러오는지 점검하는 도구입니다. URL을 입력하면 서버가 해당 페이지의 HTML을 가져와 img·script·link·iframe·video·audio·source 태그에서 평문 HTTP 리소스를 모두 찾아 태그·주소·개수로 정리해 줍니다.
혼합 콘텐츠가 있으면 자물쇠 아이콘이 깨지고, 최신 브라우저는 스크립트·스타일 같은 능동 콘텐츠를 아예 차단해 레이아웃이나 기능이 망가질 수 있습니다. 배포 전·후로 이 도구를 돌려 평문 링크가 남아 있지 않은지 확인하세요. 결과가 0개면 정상, 하나라도 있으면 위험으로 표시됩니다.
혼합 콘텐츠가 위험한 이유
페이지 본문은 HTTPS로 암호화되어 전송되더라도, 그 안에서 불러오는 리소스가 평문 HTTP라면 그 부분은 가로채기·변조에 노출됩니다. 공격자가 중간에서 스크립트를 바꿔치기하면 페이지 전체가 위태로워지므로, 브라우저는 이를 보안 약점으로 취급합니다.
- 능동 콘텐츠(script, iframe, link[stylesheet])는 대부분 브라우저가 즉시 차단합니다.
- 수동 콘텐츠(img, video, audio)는 차단되거나 경고와 함께 표시됩니다.
- 자물쇠 아이콘이 "안전하지 않음" 또는 부분 보안 상태로 바뀝니다.
고치는 방법
가장 간단한 해결책은 모든 리소스 주소를 https://로 바꾸거나, 프로토콜에 의존하지 않는 상대 경로(//example.com/...)나 루트 상대 경로(/assets/...)를 쓰는 것입니다. 외부 호스트가 HTTPS를 지원하지 않으면 자체 서버로 리소스를 옮기거나 HTTPS를 지원하는 대체 호스트를 사용하세요. 대량 일괄 변경 시에는 Content-Security-Policy: upgrade-insecure-requests 헤더로 임시 업그레이드를 적용할 수도 있습니다. CSP를 비롯한 보안 헤더가 실제 응답에 들어갔는지는 보안 헤더 점검으로 함께 확인하세요.
콘텐츠 종류별 브라우저 동작과 조치
같은 평문 HTTP 리소스라도 종류에 따라 브라우저의 처리 방식이 다릅니다. 능동(Active) 콘텐츠는 페이지를 직접 조작할 수 있어 무조건 차단되고, 수동(Passive) 콘텐츠는 화면에는 보이지만 보안 상태가 "완전히 안전하지 않음"으로 떨어집니다. 아래 표를 기준으로 우선순위를 정하면, 어떤 리소스부터 고쳐야 하는지 한눈에 알 수 있습니다.
| 콘텐츠 종류 | 예시 태그 | 브라우저 동작 | 조치 |
|---|---|---|---|
| 능동(Active) | script, iframe, XHR/fetch, CSS(link[stylesheet]) | 브라우저가 차단(요청 자체가 실패해 기능·스타일이 깨짐) | 반드시 https로 제공. 최우선 수정 대상 |
| 수동(Passive) | img, audio, video | 로드될 수 있으나 "완전히 안전하지 않음"으로 표시되고 자물쇠가 깨짐 | https 주소로 교체 |
실전 예시: 이미지 한 개로 자물쇠가 깨질 때
https://로 서비스되는 페이지가 본문에서 <img src="http://example.com/logo.png">를 불러온다고 합시다. 이 검사 도구는 이 한 줄을 잡아내 "수동(이미지) · 평문 HTTP 1건"으로 보고합니다. 이미지는 능동 콘텐츠가 아니라서 화면에는 보통 그대로 표시되지만, 그 즉시 주소창 자물쇠가 "완전히 안전하지 않음"으로 바뀝니다. 해석과 조치는 다음과 같습니다.
- 증상 — 이미지는 보이는데 자물쇠가 깨지고 콘솔에 "Mixed Content" 경고가 뜸.
- 원인 — HTTPS 페이지가
http://example.com/logo.png(수동·평문) 리소스를 로드함. - 조치 — 주소를
https://example.com/logo.png로 변경. (프로토콜 상대 경로//example.com/logo.png는 현재 권장되지 않으니https를 명시할 것.)
만약 같은 줄이 img가 아니라 script였다면 브라우저는 표시조차 하지 않고 즉시 차단하므로, 검사 결과에서 능동 콘텐츠가 보이면 가장 먼저 손봐야 합니다.
자주 묻는 질문
HTTP 페이지를 입력하면 어떻게 되나요?
동적으로 추가되는 리소스도 잡히나요?
결과 개수가 실제 차단 수와 다를 수 있나요?
입력한 주소가 외부로 저장되나요?
혼합 콘텐츠를 한 번에 막는 방법이 있나요?
관련 가이드
- 혼합 콘텐츠(mixed content) 경고 해결HTTPS 페이지의 혼합 콘텐츠 경고가 생기는 이유와 능동/수동 리소스별 해결 방법.