Xoá API vị trí địa lý khỏi các nguồn gốc không an toàn trong Chrome 50

Paul Kinlan
Paul Kinlan

Chrome có ý định công khai là ngừng sử dụng các tính năng mạnh mẽ như định vị vị trí trên các nguồn gốc không an toàn và chúng tôi hy vọng những người khác cũng sẽ làm theo.

Kể từ Chrome 50, Chrome không còn hỗ trợ lấy thông tin vị trí của người dùng bằng cách sử dụng API vị trí địa lý HTML5 từ các trang được phân phối bằng kết nối không an toàn. Điều này có nghĩa là trang đang thực hiện lệnh gọi API vị trí địa lý phải được phân phát từ ngữ cảnh bảo mật, chẳng hạn như HTTPS.

Đây là một vấn đề quan trọng vì sẽ ảnh hưởng trực tiếp đến bất kỳ trang web nào yêu cầu sử dụng API vị trí địa lý và không được phân phối qua https, nhưng chúng tôi cho rằng thay đổi này sẽ có lợi cho tất cả người dùng trên web. Bài đăng này sẽ giúp bạn hiểu lý do và cách xử lý.

Khi nào việc đổi tên diễn ra?

Thay đổi này có hiệu lực kể từ Chrome 50 (12 giờ trưa ngày 20 tháng 4 năm 2016 theo giờ PST).

Bảng điều khiển công cụ cho nhà phát triển của Chrome đã đưa ra cảnh báo kể từ phiên bản 44 (phát hành ngày 21 tháng 7 năm 2015).
Đã có nhiều thông báo công khai mô tả lý do (và nội dung thảo luận) về lý do chúng tôi thực hiện thay đổi này:

Có một số nguồn khác đã nêu bật vấn đề này: Mobiforge (ngày 26 tháng 1 năm 2016), Wired (ngày 17 tháng 3 năm 2016), VentureBeat (ngày 13 tháng 4 năm 2016).

Tại sao chúng tôi thực hiện thay đổi này?

Thông tin vị trí là dữ liệu nhạy cảm! Bạn phải sử dụng HTTPS để bảo vệ quyền riêng tư cho dữ liệu vị trí của người dùng. Nếu thông tin vị trí của người dùng có sẵn trong ngữ cảnh không an toàn, thì những kẻ tấn công trên mạng sẽ có thể biết vị trí của người dùng đó. Điều này xâm phạm nghiêm trọng quyền riêng tư của người dùng.

Điều này ảnh hưởng đến ai?

Điều này ảnh hưởng đến mọi trang hiện đang sử dụng API vị trí địa lý từ các trang được phân phối qua HTTP (không bảo mật). Điều này cũng ảnh hưởng đến các iframe HTTPS sử dụng API vị trí địa lý nếu chúng được nhúng trong các trang HTTP. (Bạn sẽ không thể thực hiện polyfill bằng cách sử dụng khung được chia sẻ qua HTTPS.)

Toàn bộ ứng dụng web của tôi có cần HTTPS không?

Bạn không bắt buộc phải phân phát toàn bộ ứng dụng qua HTTPS để sử dụng Vị trí địa lý. Bạn chỉ cần phân phát các trang sử dụng Vị trí địa lý trong ngữ cảnh an toàn. Ngữ cảnh bảo mật hiện tại là mọi nội dung được lưu trữ ở cấp cao nhất trên HTTPS hoặc máy chủ cục bộ. Ví dụ: một iframe trỏ đến một nguồn gốc bảo mật nhưng lại được lưu trữ trên nguồn gốc không bảo mật (http ://paul.kinlan.me/) sẽ không được phép gọi API vị trí địa lý.

Bạn nên di chuyển sang HTTPS vì các tính năng trình duyệt mới và hiện có yêu cầu nguồn gốc an toàn.

Điều này có ảnh hưởng đến sự phát triển của địa phương không?

Không nên, máy chủ cục bộ đã được khai báo là "có thể an toàn" trong thông số kỹ thuật và trong trường hợp này, các yêu cầu định vị vị trí được phân phát ở cấp cao nhất qua máy chủ cục bộ sẽ vẫn hoạt động.

Tôi có thể phát hiện trong thời gian chạy liệu vị trí địa lý có bị chặn do không sử dụng ngữ cảnh an toàn không

Có. Thông số kỹ thuật định vị vị trí xác định một đối tượng PositionError được chuyển đến lệnh gọi lại lỗi của API vị trí địa lý. Đối tượng xác định các thuộc tính codemessage.

Lỗi do vấn đề ngữ cảnh bảo mật này sẽ trả về code là 1, đây là "Lỗi bị từ chối cấp quyền". Bạn có thể gặp lỗi này khi người dùng từ chối quyền truy cập hoặc hệ thống từ chối quyền truy cập vào vị trí của người dùng. Điều này có nghĩa là bạn sẽ phải kiểm tra tin nhắn để xem lý do chính xác là gì.

Điều này có thể khá dễ dàng vì nó có thể thay đổi trong tương lai, nhưng một tín hiệu rõ ràng cho thấy đó là vấn đề về nội dung không an toàn là tìm chuỗi "Chỉ cho phép các nguồn gốc an toàn".

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

Hãy nhớ rằng bạn không thể chỉ kiểm tra nguồn gốc của trang vì trang của bạn có thể nằm trên https mà nằm trong một iframe được lưu trữ từ một ngữ cảnh không an toàn.

Tôi thực sự cần sử dụng Vị trí địa lý; Tôi nên làm gì?

Nếu bạn muốn sử dụng API vị trí địa lý HTML5 hoặc nếu trang web của bạn đã sử dụng API vị trí địa lý, vui lòng di chuyển các trang thực hiện lệnh gọi API vị trí địa lý sang HTTPS, đảm bảo rằng các trang đó được sử dụng trong ngữ cảnh an toàn.

Có một số lựa chọn dự phòng để lấy thông tin vị trí của người dùng mà không bị ảnh hưởng bởi thay đổi này, chẳng hạn như API vị trí địa lý của Google Maps, GeoIP (ví dụ: có các giải pháp dựa trên vị trí địa lý khác) và mã bưu chính do người dùng nhập. Tuy nhiên, bạn nên chuyển sang HTTPS. Cách tốt nhất để đảm bảo quyền truy cập liên tục vào vị trí địa lý là chuyển sang HTTPS.