{"id":4479,"date":"2017-07-21T13:03:39","date_gmt":"2017-07-21T17:03:39","guid":{"rendered":"https:\/\/www.thesslstore.com\/blog\/?p=4479"},"modified":"2017-07-24T02:37:20","modified_gmt":"2017-07-24T06:37:20","slug":"secure-contexts-features-chrome","status":"publish","type":"post","link":"https:\/\/www.thesslstore.com\/blog\/secure-contexts-features-chrome\/","title":{"rendered":"All \u201cSecure Contexts\u201d Only Features In Chrome"},"content":{"rendered":"<h2>Complete List of HTTPS-Only Features in Chrome<\/h2>\n<p>In order to keep users secure, Chrome has restricted a number of features to \u201csecure origins\u201d only. On the web, this usually means the feature is only available if your website uses HTTPS. <span id=\"newline\"><\/span><\/p>\n<p>This is part of an initiative by google known as \u201c<a href=\"https:\/\/sites.google.com\/a\/chromium.org\/dev\/Home\/chromium-security\/deprecating-powerful-features-on-insecure-origins\" rel=\"nofollow\">Deprecating Powerful Features on Insecure Origins<\/a>.\u201d In plain language this means that browser features which access your device (e.g. local storage, microphone) or sensitive user data can only be used with a secure connection.<\/p>\n<p>This applies to both existing features\/APIs and new ones. Some features, such as the Google-championed Service Worker API were designed with the expectation that they can only be used securely.<\/p>\n<p>\u201cSecure origins\u201d or \u201csecure contexts\u201d include a variety of schemes and hosts. The most popular of these would be HTTPS and <em>localhost<\/em>. All secure origins<a href=\"https:\/\/www.chromium.org\/Home\/chromium-security\/prefer-secure-origins-for-powerful-new-features\" rel=\"nofollow\"> are defined here<\/a> by Google. There is also <a href=\"https:\/\/www.w3.org\/TR\/secure-contexts\/\" rel=\"nofollow\">a W3C candidate specification defining secure context<\/a> for those that like to read internet standards.<\/p>\n<p>For many of these features a specific removal date\/version has not been given. This is because Chrome\u2019s developers look at real-world use of these features and may decide to delay removal until developers are ready. In general, they like to wait until insecure use of a feature drops below 0.03% of all page loads before removing a feature\u2019s ability to work on insecure origins.<\/p>\n<p>Keeping track of the details can be a bit difficult, so we put together a list of features already restricted to secure origins and which ones are on the chopping block.<\/p>\n<h2>Powerful Features? What are they?<\/h2>\n<p>What makes a feature powerful?<\/p>\n<p>According to <a href=\"https:\/\/www.chromium.org\/Home\/chromium-security\/prefer-secure-origins-for-powerful-new-features\" rel=\"nofollow\">Google\u2019s definition<\/a> it is any feature which \u201chandle personally-identifiable information&#8230; handle high-value information like credentials or payment instruments&#8230;[or] provide the origin with control over the UA&#8217;s trustworthy\/native UI, access to sensors on the user&#8217;s device, or generally any feature that we would provide a user-settable permission or privilege to.\u201d<\/p>\n<p>In a <a href=\"https:\/\/www.wired.com\/2016\/11\/googles-chrome-hackers-flip-webs-security-model\/\" rel=\"nofollow\">Wired interview<\/a> from last year, one of Chrome\u2019s security leads explained that in order \u201cto compete with mobile apps,\u201d Google wants \u201cwants web pages to be able to reach deeper into your computer&#8217;s resources, accessing the same sensitive infor\u00admation, like location and offline data, that apps routinely use. But if the web&#8217;s tendrils are going to extend further into our private lives, they first need to be secure.\u201d That involves a number of initiatives to make Chrome safer, and securing powerful features is one of them.<\/p>\n<p>Note that the below list of powerful features will grow over time. Any feature which would require the user to grant permission is a good candidate for a powerful feature.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4480 size-medium\" src=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/07\/Permissions-300x140.png\" alt=\"Google Permissions Warning\" width=\"300\" height=\"140\" srcset=\"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/07\/Permissions-300x140.png 300w, https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/07\/Permissions.png 686w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Check back with this document as it will be updated as Google releases new information. Please leave a comment if you have any questions on features you may be concerned about or need clarity on.<\/p>\n<h2>Secure Origin-Only Features<\/h2>\n<p>These are features that are currently restricted to HTTPS or other secure origins.<\/p>\n<table width=\"468\">\n<tbody>\n<tr>\n<td><strong>Feature\/API<\/strong><\/td>\n<td><strong>When?<\/strong><\/td>\n<td><strong>Notes<\/strong><\/td>\n<\/tr>\n<tr>\n<td>getUserMedia<\/p>\n<p>(Webcam and Microphone)<\/td>\n<td><a href=\"https:\/\/developers.google.com\/web\/updates\/2015\/10\/chrome-47-webrtc#public_service_announcements\" rel=\"nofollow\">Version 47<\/a><\/p>\n<p>~December 2015<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Geolocation<\/td>\n<td><a href=\"https:\/\/www.chromestatus.com\/features\/5636088701911040\" rel=\"nofollow\">Version 50<\/a><\/p>\n<p>~April 2016<\/td>\n<td><a href=\"https:\/\/www.thesslstore.com\/blog\/google-restricts-geolocation-https-chrome-version-50\/\">Announcement post.<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/developers.google.com\/web\/updates\/2016\/04\/geolocation-on-secure-contexts-only\" rel=\"nofollow\">Google Developer\u2019s announcement<\/a>.<\/td>\n<\/tr>\n<tr>\n<td>EME<\/p>\n<p>(Encrypted Media Extension)<\/td>\n<td>Version 58<br \/>\n~April 2017<\/td>\n<td><a href=\"https:\/\/www.thesslstore.com\/blog\/security-changes-in-chrome-58\/\">Announcement post<\/a>.<\/p>\n<p><a href=\"https:\/\/bugs.chromium.org\/p\/chromium\/issues\/detail?id=672605\" rel=\"nofollow\">Chrome Bug Tracker<\/a>.<\/td>\n<\/tr>\n<tr>\n<td>Service Workers<\/td>\n<td><a href=\"https:\/\/www.chromium.org\/blink\/serviceworker\" rel=\"nofollow\">Version 40<br \/>\n<\/a>~January 2015<\/td>\n<td>Has required HTTPS since it\u2019s initial introduction.<\/td>\n<\/tr>\n<tr>\n<td>Web Bluetooth<\/td>\n<td><a href=\"https:\/\/developers.google.com\/web\/updates\/2015\/07\/interact-with-ble-devices-on-the-web#https_only\" rel=\"nofollow\">Version 56<br \/>\n<\/a>~January 2017<\/td>\n<td>Has required HTTPS since it\u2019s initial introduction.<\/td>\n<\/tr>\n<tr>\n<td>WebCrypto<\/td>\n<td><a href=\"https:\/\/www.chromium.org\/blink\/webcrypto\" rel=\"nofollow\">Version 37<br \/>\n<\/a>~August 2014<\/td>\n<td>Has required HTTPS since it\u2019s initial introduction.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Future Changes<\/h2>\n<p>These are features which will be restricted to HTTPS or other secure origins in upcoming versions of Chrome.<\/p>\n<table width=\"468\">\n<tbody>\n<tr>\n<td><strong>Feature\/API<\/strong><\/td>\n<td><strong>When?<\/strong><\/td>\n<td><strong>Notes<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Application Cache<\/p>\n<p>(AppCache)<\/td>\n<td>N\/A<\/td>\n<td>AppCache in its entirety <a href=\"https:\/\/developers.google.com\/web\/tools\/lighthouse\/audits\/appcache\" rel=\"nofollow\">is deprecated and no longer recommended<\/a>, even over HTTPS.<\/p>\n<p>&nbsp;<\/p>\n<p>The <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Cache\" rel=\"nofollow\">Cache API<\/a>, which is part of <a href=\"https:\/\/developers.google.com\/web\/fundamentals\/getting-started\/primers\/service-workers\" rel=\"nofollow\">Service Workers<\/a>, should be used instead.<\/p>\n<p>&nbsp;<\/p>\n<p>In Chrome, the AppCache API <a href=\"https:\/\/www.chromestatus.com\/feature\/5714236168732672\" rel=\"nofollow\">has been deprecated since the release of Version 52 in July 2016<\/a> but it has not yet been removed.<\/td>\n<\/tr>\n<tr>\n<td>Device Motion \/ Orientation<\/td>\n<td>N\/A<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Fullscreen<\/td>\n<td>N\/A<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Notifications<\/td>\n<td>Version 61<\/p>\n<p>~September 2017<\/td>\n<td><a href=\"https:\/\/www.chromestatus.com\/feature\/5759967025954816\" rel=\"nofollow\">Official platform status<\/a>.<\/p>\n<p>Console warning currently shown when using<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h2>Additional Resources<\/h2>\n<p>These may help&#8230;<\/p>\n<p><a href=\"http:\/\/permission.site\/\" rel=\"nofollow\">Permission.site<\/a> is a webpage that allows you to test a variety of powerful and permission-gated features over HTTP and HTTPS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Complete List of HTTPS-Only Features in Chrome In order to keep users secure, Chrome has restricted a number of features to \u201csecure origins\u201d only. On the web, this usually means&#8230;<\/p>\n","protected":false},"author":2,"featured_media":4483,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":"","tve_updated_post":"","tve_custom_css":"","tve_user_custom_css":"","tve_globals":{},"tcb2_ready":0,"tcb_editor_enabled":0,"tve_landing_page":"","_tve_header":"","_tve_footer":""},"categories":[17],"tags":[131,155,3527],"class_list":["post-4479","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-industry-lowdown","tag-google","tag-google-chrome","tag-permissions","post-with-tags"],"views":19411,"jetpack_featured_media_url":"https:\/\/www.thesslstore.com\/blog\/wp-content\/uploads\/2017\/07\/iStock-689019766.jpg","_links":{"self":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts\/4479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/comments?post=4479"}],"version-history":[{"count":0,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/posts\/4479\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/media\/4483"}],"wp:attachment":[{"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/media?parent=4479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/categories?post=4479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thesslstore.com\/blog\/wp-json\/wp\/v2\/tags?post=4479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}