chrome mixed contents 정책

iamsummer__·2020년 8월 4일
0

chrome 81버전부터 HTTPS를 로드하지 않을 경우 mixed contents가 HTTPS로 자동 업데이트 된다고합니다.
(참고: https://blog.chromium.org/2019/10/no-more-mixed-messages-about-https.html)

동영상 플레이어를 개발하던 중 서버에 올렸을 때 동영상 재생이 안되는 이슈가 있었습니다.
저는 프로토콜 이슈인줄 알고 (사이트: https, 동영상 url: http) videojs에서 제공해주는 플러그인이나 방법에 대해서 찾고 있었습니다.
그러나 다시 확인해보니 콘솔에러에 https로 파일을 GET하는 부분에서 에러가 발생하고 있었습니다.!!!
실제로 들어오는 데이터는 http로 오고 있으나 크롬 정책으로 인해 자동으로 https로 변환되어 파일을 읽고 있던 것이었습니다.
(원인에 대해서 찾던 중 HTML5 video 태그에 http url을 dom에서 직접 실행해도 이슈가 없어 갸우뚱하긴 했었는데... 에러에 대해서 제대로 보지 않아 생긴 헤프닝이었습니다.ㅎㅎ)
다행히도 모바일웹에서는 지원하지 않아 이번 작업에는 크게 이슈가 없을거 같긴합니다.
하지만 외부에서 받는 url은 https 프로토콜로 권장해야 향후 재생에 이상이 없을 것 같습니다.

mixed contents

혼합 컨텐츠는 https로 요청한 자원과 http로 요청한 자원이 섞여 있는 것을 의미합니다.
최초로 html이 안전한 https 연결을 통해 로드를 하는데 다른 리소스(이미지,동영상,스타일시트,스크립트 등)이 안전하지 않는 http로 연결이 될 때 발생하는 이슈입니다.
먼저 혼합 컨텐츠에 종류에 대해 알아보고 http/https 차이점에 대해서 알아보겠습니다.

수동적(passive) 혼합 콘텐츠

이미지나 오디오와 같은 콘텐츠를 http로 요청하는 것입니다.
공격자가 중간에 가로채어 파일을 수정하더라도 사이트 전체에 상호작용이 일어나는 콘텐츠가 아니므로 능동적 혼한 콘텐츠보다 영향이 덜합니다. 그러나 음란물로 변경될 수 있는 위험이 있습니다.
크롬 개발자 모드에서 노란색으로 표현이 됩니다.

능동적(active) 혼합 콘텐츠

브라우저가 실행하게 되는 스크립트, CSS, ifreame, 플래시 등의 콘텐츠를 http로 요청하는 것입니다.
공격자가 중간에 가로채어 코드를 수정하면 사이드 전체에 영향이 가게 되어 위험합니다.
스크립트를 악의적으로 변경하여 이상한 URL로 리다이렉트되거나, 사용잦의 정보를 빼내는 스크립트 등으로 사용될 수 있어 위험합니다.

http란

html과 같은 문서를 웹 브라우저가 웹 서버에 요청하는 프로토콜입니다.
즉 텍스트 교환을 하는 것이다. http는 암호화가 되어 있지 않아 내가 있는 네트워크에 누군가가 접속을 해서 내용을 가로챌 수 있습니다.

https란

http와 동일하지만 암호화되어 있었습니다.
즉 인터넷 상에서 정보를 암호화하는 프로토콜을 이용하여 웹 브라우저와 서버가 데이터를 주고 받는 통신 규약입니다.
암호화를 할때에는 2개의 키가 필요합니다. 하나의 키는 공개키로 공개키 저장소에 등록을 해 놓고 다른 하나는 서버만 알 수 있는 개인키를 소유하고 있습니다.

https 통신의 흐름에 대해서 알아보겠습니다.

공개키 저장소라는 CA(Certificate Authority)가 있습니다.
CA는 민간기업이지만 아무나 운영할 수 없고 신회성이 검증된 기업만 운영이 가능하다고 합니다.
가끔씩 동사무소 사이트같은 곳을 들어가면 https지만 주의요함, 안전하지 않은 사이트등의 알림이 뜨는 경우가 있습니다.
이는 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받은 사이트를 나타냅니다.
세계적으로 신뢰할 수 있는 CA기업의 공개키는 브라우저가 이미 알고 있다고 합니다.

profile
개발하는 프론트엔드개발자

0개의 댓글