01DEFINITION
한 줄로 말하면
https 로 연 페이지 안에서 이미지나 스크립트를 http 로 불러오면 브라우저가 그것을 막거나 경고를 띄웁니다. 자물쇠 표시가 사라진 화면은 결제 직전 방문자를 되돌려 보내고, 막힌 리소스 때문에 화면이 깨지기도 합니다.
02RISK
없으면 무슨 일이 생기나
자물쇠가 사라진 화면은 결제와 문의 직전에 방문자를 되돌려 보냅니다. 안전하지 않다는 표시는 브라우저가 직접 띄우는 것이라 설명할 기회도 없습니다. 특히 예약과 결제처럼 개인정보를 넣는 화면에서 이 표시가 뜨면 이탈률이 눈에 띄게 올라갑니다.
차단되는 종류는 더 직접적입니다. 스크립트와 스타일은 브라우저가 아예 실행하지 않아서 슬라이드가 안 돌거나 레이아웃이 무너집니다. 서버에는 아무 오류가 남지 않고 개발자 화면에서는 캐시 때문에 정상으로 보이기도 해서, 특정 방문자만 겪는 문제로 오해되기 쉽습니다.
대개 https 로 옮긴 직후에 생깁니다. 서버 설정은 잘 바꿨는데 본문에 예전 주소로 박힌 이미지가 남아 있는 경우입니다. 게시판 본문과 상품 상세처럼 사람이 붙여 넣은 자리에 주로 남고, 페이지 수가 많으면 몇 년째 발견되지 않은 채로 있기도 합니다.
03CHECK IT YOURSELF
직접 확인하는 방법
아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.
-
01
문서 안의 http 주소를 찾는다
가장 빠른 확인입니다. 나온 주소가 스크립트인지 이미지인지에 따라 급한 정도가 다릅니다.
$ curl -s https://example.com | grep -oE '(src|href)="http://[^"]+' | head src="http://example.com/img/banner.jpg"
-
02
브라우저 콘솔에서 차단 기록을 본다
실제로 무엇이 막혔는지는 브라우저가 알려 줍니다. 콘솔에 혼합 콘텐츠 경고가 줄줄이 뜨면 그 목록이 그대로 고칠 목록입니다.
F12 → Console 탭 → 페이지 새로고침 "Mixed Content: The page at 'https://…' was loaded over HTTPS, but requested an insecure …"
-
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/%'; 외부 폰트나 통계 스크립트가 http 로 들어오는 경우입니다. 그 서비스가 https 를 지원하면 주소만 바꾸면 되고, 지원하지 않으면 그 리소스를 우리 서버로 가져오거나 걷어 내는 편이 낫습니다.
편집기가 이미지를 붙일 때 http 로 넣는 설정이 남아 있으면 같은 일이 반복됩니다. 관리도구의 기본 주소 설정을 https 로 바꾸고, 필요하면 브라우저가 http 요청을 자동으로 승격하도록 지시하는 헤더를 켜십시오.
05FAQ
자주 묻는 질문
http 사이트인데 이 항목이 판정되지 않았습니다
- 정상입니다. 혼합 콘텐츠는 암호화된 페이지가 암호화되지 않은 리소스를 부르는 상황을 말합니다. 페이지 자체가 http 이면 섞일 것이 없습니다. 그 경우는 https 강제 항목에서 이미 실패로 잡히고, 같은 사실로 점수를 두 번 깎지 않습니다.
이미지만 http 인데 그냥 두면 안 되나요
- 화면은 안 깨집니다. 다만 자물쇠 표시가 사라지고, 브라우저에 따라 안전하지 않음이라는 문구가 주소창에 뜹니다. 결제나 문의 폼이 있는 페이지라면 그 표시 하나가 전환에 직접 영향을 줍니다. 그리고 최근 브라우저는 이미지도 자동으로 https 로 바꿔 요청하다 실패하면 아예 안 보여 주는 방향으로 가고 있습니다.
주소에서 http 를 지우고 슬래시 둘만 남기는 방법은 어떤가요
- 예전에 쓰던 방식인데 지금은 권하지 않습니다. 페이지가 http 로 열리면 그 리소스도 http 로 따라가기 때문에 문제를 미루기만 합니다. 지금은 사이트 전체가 https 인 것이 전제이므로 https 를 그대로 적는 편이 명확하고, 나중에 주소를 옮길 때도 헷갈리지 않습니다.
치환 쿼리를 돌리다 잘못되면 어떻게 하나요
- 되돌릴 방법은 백업뿐입니다. 그래서 순서가 중요합니다. 먼저 조건에 맞는 행이 몇 개인지 세어 보고, 백업을 뜨고, 한 게시판에서 먼저 돌려 결과를 확인한 뒤 나머지로 넓히십시오. 처음부터 전체에 돌리지 마십시오.
GET STARTED
내 사이트는
이 항목을 통과할까요
주소만 넣으시면 이 항목을 포함해 39가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.