프로그래밍/JavaScipt

javascript http html5 geolocation api 사용제한

p-a-r-k 2017. 7. 10. 14:12
반응형


출처 : https://medium.com

제목이 상당히 어렵다. 좀 더 설명을 붙이면, https와 같이 보안설정이 된 사이트가 아닌경우 getCurrentPosition()과 watchPosition()과 같은 HTML5 Geoloaction api를 사용하면 아래와 같은 에러를 뱉어내며 작동되지 않는다.

getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

위 문구안에서 참고하라고 한 문서를 보면,

이미 2015년 2월부터 크롬개발자들이 HTTP의 보안문제에 대해 논의하기 시작했고, 2015년 11월에는 Geolocation API를 기능제한해야한다는 논의가 이루어졌다. 위치정보관련 기능 뿐만 아니라 아래와 같은 기능들이 제한되길 원한다고 써있다. 하지만 현시점에서 확인되는 바는 위치정보에 대한 것 뿐이다. 나머지들도 미래에 제한될 수 있다고 알고 있으면 될듯.

  • Geolocation
  • Device motion / orientation
  • EME
  • getUserMedia
  • AppCache
  • Notifications

실제로 제한이 적용된 시점은 크롬 버전 50이 출시된 시점인 2016년 4월 20일 이다. 버전 44부터 꾸준히 warning메시지를 콘솔을 통해 보냈다고 한다. 크롬에서의 이런 변화의 맥락에 대해서는 “Geolocation API Removed from Unsecured Origins in Chrome 50” 라는 문서에 자세히 기록되어있다. 요약하면,

크롬 버전 50부터 보안이 적용되지 않는 연결에 대하여 HTML5 Geolocation API를 사용한 사용자 위치정보를 제공하지 않는다. 이것은 Geolocation API호출은 HTTPS와 같은 secure context 로부터만 가능하다는 얘기다.
언제부터?
크롬 버전 50(12PM PST April 20 2016)부터 효력을 발휘한다. 개발자 도구를 통해 버전 44(released July 21 2015)부터 warning메시지를 제공해왔다.
이런 변화의 배경은?
위치정보는 매우 민감한 정보다. HTTPS를 요구한다는 것은 사용자의 위치정보를 보호하겠다는 요구이다. 만약 사용자들의 위치정보가 non-secure환경에서 노출된다면 공격자들이 네트워크상에서 사용자들이 어디에 있는지 알아낼 수 있을것이다. 이것은 사용자의 프라이버시를 심각하게 손상시킨다.
어디에 적용되는가?
HTTP(non-secure)를 사용하는 환경에서 Geolocation API를 사용하는 모든 페이지. 심지어 Geolocation API를 사용하는 HTTPS주소를 HTTP페이지 안의 iframe 으로 감싼경우에도 API사용이 제한된다.
모든곳에 적용해야 하는가?
그렇지 않다. Geoloaction 을 사용하는 페이지에서만 적용해도 된다. 그러나 우리는 HTTPS로 마이그레이션 하기를 강력하게 권고한다. HTTPS로 마이그레이션하면 보안이 요구되는 매우 파워풀한 새 기능들과 이미 존재하는 기능들을 사용할 수 있다.

무려 2년 전부터 중요한 논의가 시작되었고, 2015년 7월에 이미 크롬에 조건부 적용되기 시작했다는것은 한참 후에나 알게되었다. 이러려고 프론트엔드 개발자가 되려고 했나 약간의 자괴감.

대안

  1. 당연히 HTTPS 연결을 도입하는것이 좋다.

2. 사용자 위치정보를 반드시 얻어야 하는가? 고민해볼 수 도 있겠다. 하지만 이와는 별도로 보안에 대응한다는 관점 뿐 아니라 검색에도 좋고 프로그레시브 웹앱과 같은 차세대 기능들을 도입하는데 있어서도 HTTPS 도입은 강력하게 권한다.

3. 위 문서 하단에 보면 Google Maps Geolocation APIGeoIPiptolocation과 같은 써드파티 도구들로 브라우저의 위치정보 사용제한과 무관하계 사용자 위치정보를 얻을 수 있는 방법이 있다. 따라서 https도입을 했더라도 위치정보 API 오류의 가능성이 없다고 할 수 없으므로 위와 같은 도구들을 유용하게 사용하는것도 필요할 것이다.

다른 브라우저는 어떨까?

다른 브라우저도 사용자 위치정보 사용제한을 이미 하고 있거나, 할 예정이다.

  • Firefox : 신현석님 얘기로는 55버전부터 사용제한 된다고 함.
  • Opera : 39버전부터
  • Safari : 10버전부터(2016년 9월 20일)
  • Safari MObile : 10.1버전부터
  • Android Webview : 50버전부터
  • Chrome for Android : 50버전부터


반응형