Chrome 50에서 안전하지 않은 출처에서 위치정보 API가 삭제됨

Paul Kinlan
Paul Kinlan

Chrome은 비보안 출처의 위치정보와 같은 강력한 기능을 지원 중단하려는 공개 의도를 가지고 있습니다. 다른 개발자들도 동참하기를 바랍니다.

Chrome 50부터 Chrome은 비보안 연결로 게재된 페이지에서 HTML5 Geolocation API를 사용하여 사용자 위치를 확인하는 기능을 더 이상 지원하지 않습니다. 즉, Geolocation API를 호출하는 페이지는 HTTPS와 같은 보안 컨텍스트에서 제공되어야 합니다.

이는 Geolocation API를 사용해야 하고 https를 통해 제공되지 않는 사이트에 직접 영향을 미치므로 중요한 문제입니다. 하지만 웹의 모든 사용자에게 도움이 될 것으로 생각되는 변경사항입니다. 이 게시물은 이유와 진행 방��을 이해하는 데 도움이 될 것입니다.

언제 변경되나요?

이 변경사항은 Chrome 50 (2016년 4월 20일 오후 12시 PST 기준)부터 적용됩니다.

Chrome의 개발자 도구 콘솔에서 버전 44(2015년 7월 21일 출시)부터 경고를 제공해 왔습니다.
변경하는 이유와 논의를 설명하는 여러 공개 발표가 있었습니다.

Mobiforge (2016년 1월 26일), Wired (2016년 3월 17일), VentureBeat(2016년 4월 13일).

변경하는 이유가 무엇인가요?

위치는 민감한 정보입니다. 사용자 위치 데이터의 개인 정보를 보호하기 위해 HTTPS를 요구해야 합니다. 안전하지 않은 컨텍스트에서 사용자의 위치를 확인할 수 있는 경우 네트워크의 공격자가 사용자의 위치를 알 수 있으므로 사용자 개인 정보 보호가 심각하게 침해됩니다.

이번 지원 중단이 누구에게 영향을 주나요?

이는 HTTP (비보안)를 통해 제공되는 페이지에서 현재 Geolocation API를 사용 중인 모든 페이지에 영향을 미칩니다. Geolocation API를 사용하는 HTTPS iframe이 HTTP 페이지에 삽입된 경우 이 iframe에도 영향을 미칩니다. (공유된 HTTPS 전송 프레임을 사용하여 폴리필할 수 없습니다.)

전체 웹 앱에 HTTPS가 필요한가요?

HTTPS를 통해 전체 앱을 제공해야 위치정보를 사용할 수 있는 것은 아닙니다. 위치정보를 사용하는 페이지만 보안 컨텍스트를 통해 제공되어야 합니다. 현재 보안 컨텍스트는 HTTPS 또는 localhost에서 최상위 수준에서 호스팅되는 모든 항목입니다. 예를 들어 안전한 출처를 가리키지만 안전하지 않은 출처 (http ://paul.kinlan.me/)에서 호스팅되는 iframe은 Geolocation API를 호출�� 수 없습니다.

강력한 새 브라우저 및 기존 브라우저 기능에는 안전한 출처가 필요하므로 HTTPS로 이전하는 것이 좋습니다.

이것이 로컬 개발에 영향을 미치나요?

그렇지 않으면 localhost가 사양에서 '잠재적으로 안전'하다고 선언되어 있으며 여기서는 localhost를 통해 최상위 수준에서 제공되는 위치정보 요청이 계속 작동합니다.

보안 컨텍스트에 있지 않아 위치정보가 차단되었는지 런타임에 감지할 수 있나요?

저도요 위치정보 사양은 Geolocation API의 실패 콜백에 전달되는 PositionError 객체를 정의합니다. 객체는 codemessage 속성을 정의합니다.

이 보안 컨텍스트 문제로 인한 오류는 '권한 거부 오류'인 code 1을 반환합니다. 사용자가 액세스를 거부했거나 시스템에서 사���자 위치에 대한 액세스를 거부한 경우 이 오류가 발생할 수 있습니다. 즉, 메시지를 확인하여 정확한 이유가 무엇인지 확인해야 합니다.

이는 향후 변경될 수 있으므로 매우 불안정할 수 있지만 '안전한 출처만 허용됨'이라는 문자열을 찾는 것이 비보안 콘텐츠 문제였음을 강력한 신호로 삼을 수 있습니다.

navigator.geolocation.getCurrentPosition(success => {
    /* Do some magic. */
}, failure => {
    if (failure.message.startsWith("Only secure origins are allowed")) {
    // Secure Origin issue.
    }
});

페이지가 https에 있지만 안전하지 않은 컨텍스트에서 호스팅되는 iframe 내에 있을 수 있으므로 페이지의 출처만 확인할 수는 없습니다.

위치정보를 꼭 사용해야 합니다. 어떻게 해야 하나요?

HTML5 Geolocation API를 사용하고 싶거나 사이트에서 이미 Geolocation API를 사용하고 있다면 Geolocation API를 호출하는 페이지를 HTTPS로 이전하고 안전한 컨텍스트에서 사용해야 합니다.

Google Maps Geolocation API, GeoIP (예: 다른 지역 기반 솔루션 사용), 사용자가 입력한 우편번호 등 이 변경사항의 영향을 받지 않는 사용자의 위치를 가져오는 데 사용할 수 있는 ��양한 대체 옵션이 있습니다. 하지만 위치정보에 지속적으로 액세스할 수 있도록 하는 가장 좋은 방법은 HTTPS로 이동하는 것을 적극 권장합니다.