본문 바로가기
MAKESITE
무료 스캔 문의하기 로그인

점검 항목 · 검색 노출

혼합 콘텐츠 — https 안의 http 리소스

주소창의 자물쇠가 사라지거나 화면 일부가 비어 있는데 서버 로그에는 아무 오류가 없는 경우가 있습니다. 막은 것은 서버가 아니라 방문자의 브라우저입니다.

심각도 보통 검색 노출 무료 스캔 판정 항목 /check/mixed-content

01DEFINITION

한 줄로 말하면

https 로 연 페이지 안에서 이미지나 스크립트를 http 로 불러오면 브라우저가 그것을 막거나 경고를 띄웁니다. 자물쇠 표시가 사라진 화면은 결제 직전 방문자를 되돌려 보내고, 막힌 리소스 때문에 화면이 깨지기도 합니다.

02RISK

없으면 무슨 일이 생기나

자물쇠가 사라진 화면은 결제와 문의 직전에 방문자를 되돌려 보냅니다. 안전하지 않다는 표시는 브라우저가 직접 띄우는 것이라 설명할 기회도 없습니다. 특히 예약과 결제처럼 개인정보를 넣는 화면에서 이 표시가 뜨면 이탈률이 눈에 띄게 올라갑니다.

차단되는 종류는 더 직접적입니다. 스크립트와 스타일은 브라우저가 아예 실행하지 않아서 슬라이드가 안 돌거나 레이아웃이 무너집니다. 서버에는 아무 오류가 남지 않고 개발자 화면에서는 캐시 때문에 정상으로 보이기도 해서, 특정 방문자만 겪는 문제로 오해되기 쉽습니다.

대개 https 로 옮긴 직후에 생깁니다. 서버 설정은 잘 바꿨는데 본문에 예전 주소로 박힌 이미지가 남아 있는 경우입니다. 게시판 본문과 상품 상세처럼 사람이 붙여 넣은 자리에 주로 남고, 페이지 수가 많으면 몇 년째 발견되지 않은 채로 있기도 합니다.

03CHECK IT YOURSELF

직접 확인하는 방법

아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.

  1. 01
    문서 안의 http 주소를 찾는다

    가장 빠른 확인입니다. 나온 주소가 스크립트인지 이미지인지에 따라 급한 정도가 다릅니다.

    $ curl -s https://example.com | grep -oE '(src|href)="http://[^"]+' | head
    src="http://example.com/img/banner.jpg"
  2. 02
    브라우저 콘솔에서 차단 기록을 본다

    실제로 무엇이 막혔는지는 브라우저가 알려 줍니다. 콘솔에 혼합 콘텐츠 경고가 줄줄이 뜨면 그 목록이 그대로 고칠 목록입니다.

    F12 → Console 탭 → 페이지 새로고침
    "Mixed Content: The page at 'https://…' was loaded over
     HTTPS, but requested an insecure …"
  3. 03
    데이터베이스 본문에 남은 주소를 센다

    템플릿을 다 고쳐도 본문에 남아 있으면 계속 재발합니다. 게시글과 상품 설명에 몇 건이나 남았는지 먼저 세어 보십시오.

    SELECT COUNT(*) FROM g5_write_free
     WHERE wr_content LIKE '%http://example.com%';

04HOW TO FIX

고치는 방법

서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.

스크립트와 스타일부터 고친다

차단되는 종류라 화면이 실제로 깨지는 자리입니다. 이미지보다 먼저 손대십시오. 대개 템플릿 몇 줄이고 주소 앞부분만 바꾸면 됩니다.

전  <script src="http://example.com/js/app.js">
후  <script src="https://example.com/js/app.js">
본문에 박힌 주소를 한 번에 바꾼다

반드시 백업을 먼저 뜨십시오. 치환은 되돌릴 수 없습니다. 그리고 우리 도메인만 바꾸십시오. 남의 도메인까지 https 로 바꾸면 그쪽이 https 를 지원하지 않을 때 이미지가 통째로 안 나옵니다.

UPDATE g5_write_free
   SET wr_content = REPLACE(wr_content,
       'http://example.com/', 'https://example.com/')
 WHERE wr_content LIKE '%http://example.com/%';
외부 리소스는 https 를 지원하는지 확인하고 옮긴다

외부 폰트나 통계 스크립트가 http 로 들어오는 경우입니다. 그 서비스가 https 를 지원하면 주소만 바꾸면 되고, 지원하지 않으면 그 리소스를 우리 서버로 가져오거나 걷어 내는 편이 낫습니다.

고친 뒤 다시 생기지 않게 막는다

편집기가 이미지를 붙일 때 http 로 넣는 설정이 남아 있으면 같은 일이 반복됩니다. 관리도구의 기본 주소 설정을 https 로 바꾸고, 필요하면 브라우저가 http 요청을 자동으로 승격하도록 지시하는 헤더를 켜십시오.

05FAQ

자주 묻는 질문

http 사이트인데 이 항목이 판정되지 않았습니다

정상입니다. 혼합 콘텐츠는 암호화된 페이지가 암호화되지 않은 리소스를 부르는 상황을 말합니다. 페이지 자체가 http 이면 섞일 것이 없습니다. 그 경우는 https 강제 항목에서 이미 실패로 잡히고, 같은 사실로 점수를 두 번 깎지 않습니다.

이미지만 http 인데 그냥 두면 안 되나요

화면은 안 깨집니다. 다만 자물쇠 표시가 사라지고, 브라우저에 따라 안전하지 않음이라는 문구가 주소창에 뜹니다. 결제나 문의 폼이 있는 페이지라면 그 표시 하나가 전환에 직접 영향을 줍니다. 그리고 최근 브라우저는 이미지도 자동으로 https 로 바꿔 요청하다 실패하면 아예 안 보여 주는 방향으로 가고 있습니다.

주소에서 http 를 지우고 슬래시 둘만 남기는 방법은 어떤가요

예전에 쓰던 방식인데 지금은 권하지 않습니다. 페이지가 http 로 열리면 그 리소스도 http 로 따라가기 때문에 문제를 미루기만 합니다. 지금은 사이트 전체가 https 인 것이 전제이므로 https 를 그대로 적는 편이 명확하고, 나중에 주소를 옮길 때도 헷갈리지 않습니다.

치환 쿼리를 돌리다 잘못되면 어떻게 하나요

되돌릴 방법은 백업뿐입니다. 그래서 순서가 중요합니다. 먼저 조건에 맞는 행이 몇 개인지 세어 보고, 백업을 뜨고, 한 게시판에서 먼저 돌려 결과를 확인한 뒤 나머지로 넓히십시오. 처음부터 전체에 돌리지 마십시오.
여기까지는 항목 일반론입니다. 무엇이고 왜 문제이며 어떻게 고치는지는 감출 이유가 없어 그대로 적었습니다. 리포트에 들어가는 것은 귀사 사이트에서 실제로 어떤 값이 나왔는지 — 어느 주소의 어느 응답인지, 그 환경에서 어떤 순서로 적용해야 하는지, 예상 공수가 얼마인지입니다. 이 페이지만 보고 직접 고치셔도 되고, 실제로 그러시라고 적어 두었습니다.

GET STARTED

내 사이트는
이 항목을 통과할까요

주소만 넣으시면 이 항목을 포함해 39가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.