Bên thứ ba là gì?
Rất hiếm khi một trang web hoàn toàn độc lập. Niên giám web HTTP cho thấy hầu hết các trang web (khoảng 95%) đều chứa một số nội dung của bên thứ ba.
Niên giám định nghĩa nội dung của bên thứ ba là nội dung được lưu trữ trên một nguồn gốc công cộng và được nhiều bên sử dụng trang web và không chịu ảnh hưởng của chủ sở hữu trang web riêng lẻ. Những nội dung này có thể là hình ảnh hoặc nội dung nghe nhìn khác như video, phông chữ hoặc tập lệnh. Hình ảnh và tập lệnh chiếm nhiều hơn mọi thành phần khác được kết hợp lại với nhau. Nội dung của bên thứ ba không cần thiết cho việc phát triển một trang web, nhưng cũng có thể; gần như chắc chắn bạn sẽ sử dụng nội dung nào đó được tải từ một máy chủ dùng chung công khai, cho dù đó là phông chữ trên web, iframe được nhúng của video, quảng cáo hoặc thư viện JavaScript. Ví dụ: bạn có thể đang sử dụng phông chữ trên web được phân phối từ Google Fonts, hoặc đo lường số liệu phân tích bằng Google Analytics; bạn có thể đã thêm các nút Thích hoặc nút Đăng nhập bằng mạng xã hội; bạn có thể nhúng bản đồ hoặc video hay xử lý các giao dịch mua sắm thông qua dịch vụ của bên thứ ba; bạn có thể đang theo dõi lỗi và ghi nhật ký cho nhóm phát triển của riêng bạn thông qua công cụ theo dõi của bên thứ ba.
Để bảo vệ quyền riêng tư, bạn nên xem xét một định nghĩa hơi khác và ít rộng hơn: tài nguyên của bên thứ ba và trong một tập lệnh cụ thể của bên thứ ba, được phân phát từ cùng một nguồn gốc công cộng và được sử dụng rộng rãi như minh hoạ, nhưng cũng là tác giả bởi ai đó không phải là chủ sở hữu trang web. Khía cạnh quyền tác giả của bên thứ ba là yếu tố then chốt khi xem xét cách bảo vệ của người dùng quyền riêng tư của người khác. Điều này sẽ khiến bạn phải xem xét xem có những rủi ro nào, sau đó quyết định cách thức hoặc có nên sử dụng của bên thứ ba dựa trên những rủi ro đó. Như đã thảo luận, những nội dung sau đây sẽ giúp bạn nắm được bối cảnh và từ đó xác định xem bạn cần đánh đổi điều gì và ý nghĩa của chúng.
Đây không phải là ý nghĩa khi thảo luận về "tài nguyên của bên thứ ba" nói chung: sự khác biệt giữa bên thứ nhất và bên thứ ba thực sự là một nhóm về ngữ cảnh trong đó một thứ nào đó được sử dụng. Một tập lệnh được tải từ một trang web khác là tập lệnh của bên thứ ba và yêu cầu HTTP tải tập lệnh có thể chứa cookie, nhưng những cookie đó không thực sự là "cookie của bên thứ ba"; chúng chỉ là cookie và cho dù đó là "bên thứ ba" hay "bên thứ nhất" phụ thuộc vào việc tập lệnh có đang được tải trên trên trang web của bạn hoặc một trang trên trang web của chủ sở hữu tập lệnh.
Tại sao chúng tôi sử dụng tài nguyên của bên thứ ba?
Bên thứ ba là một cách tuyệt vời để thêm chức năng vào trang web của bạn. Đó có thể là các tính năng mà người dùng nhìn thấy hoặc không xuất hiện các chức năng dành cho nhà phát triển (chẳng hạn như theo dõi lỗi) nhưng các chức năng này làm giảm khối lượng phát triển của bạn, đồng thời bản thân các tập lệnh vẫn được duy trì do người khác gửi: nhóm phát triển của dịch vụ mà bạn đang tham gia. Tất cả những cách này hiệu quả nhờ vào khả năng kết hợp của web: khả năng tập hợp các phần lại với nhau để tạo thành một tổng lớn hơn tổng của chúng.
Niên giám web của Kho lưu trữ HTTP cung cấp một mô tả hay:
Bên thứ ba cung cấp một bộ sưu tập hình ảnh, video, phông chữ, công cụ, thư viện, tiện ích, trình theo dõi, quảng cáo và bất cứ thứ gì khác mà bạn có thể hình dung ra khi nhúng vào các trang web của chúng tôi. Điều này cho phép kể cả những trang web không mang tính kỹ thuật nhất để có thể tạo và xuất bản nội dung lên web. Nếu không có bên thứ ba, web có thể sẽ là một phương tiện vô cùng nhàm chán, chỉ có văn bản và mang tính học thuật thay vì một nền tảng phức tạp, phong phú và sống động, không thể thiếu đối với cuộc sống của nhiều người trong chúng ta hiện nay.
Tài nguyên của bên thứ ba có thể làm gì?
Truy cập một số thông tin
Khi bạn sử dụng tài nguyên của bên thứ ba trên trang web của mình, bất kể đó là tài nguyên gì, một số thông tin sẽ được chuyển đến bên thứ ba đó. Ví dụ: nếu bạn đưa hình ảnh từ một trang web khác vào, yêu cầu HTTP mà trình duyệt của người dùng thực hiện sẽ chuyển qua URL giới thiệu với URL trang của bạn cũng như địa chỉ IP của người dùng.
Theo dõi trên nhiều trang web
Tiếp tục với ví dụ tương tự – khi hình ảnh tải từ trang web của bên thứ ba, hình ảnh có thể bao gồm một cookie và cookie đó sẽ được gửi lại cho bên thứ ba khi người dùng yêu cầu hình ảnh đó tiếp theo. Điều này có nghĩa là bên thứ ba đó có thể biết rằng đang được sử dụng trên trang web của bạn và dịch vụ này có thể gửi lại cookie, có thể có ID duy nhất cho người dùng đó. Điều này có nghĩa là lần tiếp theo người dùng truy cập vào trang web của bạn hoặc bất kỳ trang web nào khác có tài nguyên từ bên thứ ba đó, lượt truy cập duy nhất đó Cookie của mã nhận dạng sẽ được gửi lại. Việc này cho phép bên thứ ba tạo nhật ký về những nơi người dùng đó truy cập: trang web của bạn, các trang web khác sử dụng cùng một tài nguyên của bên thứ ba, tất cả trên web.
Đây là tính năng theo dõi trên nhiều trang web: cho phép bên thứ ba thu thập nhật ký hoạt động của người dùng trên nhiều trang web, miễn là các trang web đó đều sử dụng tài nguyên đến từ cùng một bên thứ ba. Đó có thể là phông chữ, hình ảnh hoặc biểu định kiểu – tất cả đều là tài nguyên tĩnh. Đó cũng có thể là một tài nguyên động: một đoạn kịch bản, một nút trên mạng xã hội, một quảng cáo. Tập lệnh được đưa vào có thể thu thập nhiều dữ liệu hơn nữa vì có tính động: nó có thể kiểm tra trình duyệt và môi trường của người dùng, đồng thời chuyển dữ liệu đó trở lại trình tạo gốc. Bất kỳ tập lệnh nào cũng có thể làm điều này ở một mức độ nào đó, chẳng hạn như các tài nguyên động không xuất hiện dưới dạng tập lệnh, chẳng hạn như nội dung nhúng trên mạng xã hội hoặc quảng cáo hoặc nút chia sẻ. Nếu xem thông tin chi tiết của một biểu ngữ về cookie trên các trang web phổ biến, bạn có thể thấy danh sách các tổ chức có thể thêm cookie theo dõi cho người dùng để xây dựng hình ảnh về các hoạt động của họ nhằm tạo hồ sơ về người dùng đó. Có có thể lên đến hàng trăm. Nếu bên thứ ba cung cấp dịch vụ miễn phí thì đây là một cách giúp họ có thể tiết kiệm chi phí là vì họ thu thập và sau đó kiếm tiền từ dữ liệu này.
Mô hình mối đe doạ đối với quyền riêng tư mục tiêu là một hướng dẫn hữu ích về các loại vấn đề về quyền riêng tư mà trình duyệt cần bảo vệ người dùng. Đây là tài liệu vẫn đang được thảo luận tại thời điểm viết, nhưng nó đưa ra một số phân loại cấp cao về các loại các mối đe doạ về quyền riêng tư hiện có. Rủi ro từ tài nguyên của bên thứ ba chủ yếu là "nhận dạng qua trang web không mong muốn", trong đó có thể xác định cùng một người dùng trên nhiều trang web, và "tuyên bố thông tin nhạy cảm", nơi một trang web có thể thu thập thông tin mà người dùng coi là nhạy cảm.
Đây là sự khác biệt quan trọng: nhận dạng chéo trang web không mong muốn sẽ không tốt ngay cả khi bên thứ ba không thu thập thêm thông tin nhạy cảm thông tin khỏi thông tin đó vì việc này làm mất quyền kiểm soát của người dùng đối với danh tính của họ. Có được quyền truy cập vào đường liên kết giới thiệu và địa chỉ IP của người dùng và cookie chính là sự tiết lộ không mong muốn. Việc sử dụng tài nguyên của bên thứ ba sẽ kết hợp với yếu tố lập kế hoạch về cách bạn sẽ sử dụng chúng theo cách bảo đảm quyền riêng tư. Một số công việc trong số đó do bạn chi trả với tư cách là nhà phát triển trang web, còn một số do trình duyệt thực hiện ở vai trò là tác nhân người dùng; tức là nhân viên hỗ trợ làm việc thay mặt cho người dùng để tránh tiết lộ thông tin nhạy cảm và nhận dạng trên nhiều trang web không mong muốn khi có thể. Dưới đây, chúng tôi sẽ xem xét chi tiết hơn về các biện pháp giảm thiểu và phương pháp trên trình duyệt và cấp độ phát triển trang web.
Mã của bên thứ ba phía máy chủ
Định nghĩa trước đó của chúng tôi về việc bên thứ ba cố ý thay đổi cách tiếp cận phía máy khách của HTTP Almanac (nếu phù hợp) cho báo cáo của họ!), để bao gồm cả tác giả của bên thứ ba, bởi vì từ góc độ quyền riêng tư, bên thứ ba là bất kỳ ai biết bất kỳ điều gì về những người dùng không phải là bạn.
Điều này bao gồm các bên thứ ba cung cấp dịch vụ mà bạn sử dụng trên máy chủ, cũng như máy khách. Từ một quyền riêng tư quan điểm là thư viện của bên thứ ba (chẳng hạn như nội dung nào đó được đưa vào TLD hoặc Composer hoặc NuGet) cũng rất quan trọng cần hiểu rõ. Các phần phụ thuộc có truyền dữ liệu ra ngoài biên giới của bạn không? Nếu bạn chuyển dữ liệu vào dịch vụ ghi nhật ký hoặc cơ sở dữ liệu được lưu trữ từ xa, nếu các thư viện bạn bao gồm cả "điện thoại nhà riêng" cho tác giả thì những nội dung này có thể vi phạm chính sách của người dùng quyền riêng tư nên chúng cần được kiểm tra. Bên thứ ba dựa trên máy chủ thường phải do bạn chuyển giao dữ liệu người dùng, nghĩa là dữ liệu mà đường liên kết đó tiếp xúc sẽ thuộc quyền kiểm soát của bạn nhiều hơn. Ngược lại, bên thứ ba dựa trên ứng dụng – một tập lệnh hoặc tài nguyên HTTP có trên trang web của bạn và được trình duyệt của người dùng tìm nạp—có thể thu thập một số dữ liệu trực tiếp từ người dùng mà không cần quá trình đó của bộ sưu tập đang được bạn dàn xếp. Hầu hết học phần này sẽ liên quan đến cách xác định các bên thứ ba phía máy khách đó bạn đã chọn bao gồm và tiếp cận người dùng của mình, chính xác là vì bạn có ít khả năng hoà giải hơn. Nhưng đáng giá hãy cân nhắc việc bảo mật mã phía máy chủ để bạn hiểu được nội dung liên lạc đi từ mã đó và có thể ghi nhật ký hoặc chặn bất kỳ là bất ngờ. Chi tiết về cách thực hiện chính xác việc này nằm ngoài phạm vi của chúng tôi ở đây (và phụ thuộc rất nhiều vào cách thiết lập máy chủ của bạn) nhưng đây là một phần khác trong quan điểm về bảo mật và quyền riêng tư của bạn.
Tại sao bạn cần phải thận trọng với các bên thứ ba?
Các tập lệnh và tính năng của bên thứ ba thực sự quan trọng và mục tiêu của chúng tôi với tư cách là nhà phát triển web là tích hợp những tính năng này, không quay lưng lại với họ! Tuy nhiên, vẫn có những vấn đề tiềm ẩn. Nội dung của bên thứ ba có thể gây ra vấn đề về hiệu suất và có thể cũng gây ra các vấn đề bảo mật vì bạn sẽ đưa một dịch vụ bên ngoài vào bên trong ranh giới tin cậy của mình. Nhưng dịch vụ bên thứ ba nội dung cũng có thể gây ra các vấn đề về quyền riêng tư!
Khi nói về tài nguyên của bên thứ ba trên web, bạn nên xem xét vấn đề bảo mật (cùng nhiều vấn đề khác) nơi bên thứ ba có thể lấy cắp dữ liệu của công ty bạn và đối chiếu với vấn đề về quyền riêng tư (cùng nhiều vấn đề khác) khi một bên thứ ba mà bạn nêu trong đó đánh cắp hoặc có được quyền truy cập vào thông tin mà không có sự đồng ý của bạn (hoặc họ).
Một ví dụ về vấn đề bảo mật là "người kiểm tra web" lấy cắp thông tin thẻ tín dụng––tài nguyên của bên thứ ba (bao gồm cả tài nguyên này) trên trang mà người dùng nhập thông tin thẻ tín dụng có thể ăn cắp những thông tin thẻ tín dụng đó và gửi cho bên thứ ba độc hại. Những người tạo ra các tập lệnh này rất sáng tạo trong việc tìm cách ẩn chúng. Một bản tóm tắt mô tả cách các tập lệnh skimmer đã bị ẩn trong nội dung của bên thứ ba như những hình ảnh dùng cho biểu trưng trang web, biểu tượng trang web và mạng xã hội, các thư viện phổ biến như jQuery, Modernizr và Trình quản lý thẻ của Google, các tiện ích trang web như cửa sổ trò chuyện trực tiếp và tệp CSS.
Vấn đề về quyền riêng tư có chút khác biệt. Các bên thứ ba này là một phần trong dịch vụ của bạn; để duy trì tin tưởng vào bạn, bạn cần tin tưởng rằng người dùng có thể tin tưởng họ. Nếu một bên thứ ba mà bạn sử dụng thu thập dữ liệu về người dùng của bạn rồi sử dụng sai mục đích hoặc gây khó khăn cho việc xoá/phát hiện, hoặc bị rò rỉ dữ liệu hoặc vi phạm quyền của người dùng thì người dùng có thể sẽ thấy điều đó là sự suy giảm niềm tin của họ đối với dịch vụ của bạn, chứ không chỉ đơn thuần là bên thứ ba. Đó là danh tiếng và mối quan hệ của bạn trên dây. Đây là lý do tại sao bạn cần tự hỏi: bạn có tin tưởng các bên thứ ba mà bạn đang sử dụng trên trang web không?
Một số ví dụ về bên thứ ba là gì?
Chúng tôi đang thảo luận về "bên thứ ba" nhưng thực tế có nhiều loại khác nhau và chúng có quyền truy cập vào lượng dữ liệu người dùng khác nhau.
Ví dụ: việc thêm phần tử <img>
vào HTML (được tải từ một máy chủ khác) sẽ cung cấp cho máy chủ đó thông tin khác nhau
về người dùng so với việc thêm <iframe>
hoặc phần tử <script>
. Đây chỉ là các ví dụ chứ không phải là một danh sách đầy đủ
hữu ích để hiểu sự khác biệt giữa các loại sản phẩm của bên thứ ba khác nhau mà trang web của bạn có thể sử dụng.
Yêu cầu tài nguyên trên nhiều trang web
Tài nguyên trên nhiều trang web là bất kỳ nội dung nào trên trang web của bạn được tải từ một trang web khác và không phải là <iframe>
hay <script>
. Ví dụ
bao gồm <img>
, <audio>
, <video>
, phông chữ web được tải bởi CSS và kết cấu WebGL. Tất cả đều được tải thông qua yêu cầu HTTP và dưới dạng
được mô tả trước đó, các yêu cầu HTTP đó sẽ bao gồm mọi cookie được đặt trước đó bởi trang web khác, địa chỉ IP của người dùng yêu cầu,
và URL của trang hiện tại là liên kết giới thiệu. Trước đây, tất cả yêu cầu của bên thứ ba đều bao gồm dữ liệu này theo mặc định, mặc dù
có những nỗ lực nhằm giảm bớt hoặc tách biệt dữ liệu được chuyển tới bên thứ ba bằng nhiều trình duyệt khác nhau, như được mô tả trong phần "Tìm hiểu
Biện pháp bảo vệ trình duyệt của bên thứ ba" tiếp theo.
Nhúng iframe trên nhiều trang web
Một tài liệu hoàn chỉnh được nhúng trong các trang của bạn qua <iframe>
có thể yêu cầu thêm quyền truy cập vào các API trình duyệt, ngoài bộ nhớ đệm
cookie, địa chỉ IP và liên kết giới thiệu. Chính xác những API có sẵn cho <iframe>
d trang và cách các API đó yêu cầu quyền truy cập sẽ tuỳ theo từng trình duyệt,
và hiện đang trong quá trình thay đổi: hãy xem "Chính sách về quyền" bên dưới để biết những nỗ lực hiện tại nhằm hạn chế hoặc giám sát quyền truy cập API trong
tài liệu.
Thực thi JavaScript trên nhiều trang web
Khi thêm một phần tử <script>
, bạn sẽ tải và chạy JavaScript trên nhiều trang web trong ngữ cảnh cấp cao nhất của trang. Điều này có nghĩa là
tập lệnh chạy có quyền truy cập đầy đủ vào mọi thứ mà các tập lệnh bên thứ nhất của riêng bạn thực hiện. Quyền của trình duyệt vẫn quản lý dữ liệu này,
vì vậy, việc yêu cầu vị trí của người dùng (ví dụ) sẽ vẫn yêu cầu sự đồng ý của người dùng. Nhưng bất kỳ thông tin nào có trên trang hoặc
có sẵn dưới dạng các biến JavaScript có thể được đọc bởi tập lệnh như vậy và điều này không chỉ bao gồm cookie được chuyển cho bên thứ ba
như một phần của yêu cầu, nhưng cũng cookie dành riêng cho trang web của bạn. Tương tự, một tập lệnh của bên thứ ba được tải vào
có thể thực hiện tất cả yêu cầu HTTP tương tự như mã của riêng bạn, tức là có thể gửi yêu cầu fetch()
đến các API phụ trợ để lấy dữ liệu.
Đưa thư viện của bên thứ ba vào phần phụ thuộc
Như đã mô tả trước đó, mã phía máy chủ của bạn cũng có thể bao gồm các phần phụ thuộc của bên thứ ba và bạn không thể phân biệt được các phần phụ thuộc này với mã của mình mã vào khả năng của mình; mã mà bạn đưa vào từ kho lưu trữ GitHub hoặc thư viện ngôn ngữ lập trình của bạn (npm, PyPI, trình soạn thảo, v.v.) có thể đọc tất cả dữ liệu mà mã khác của bạn có thể đọc.
Tìm hiểu về các bên thứ ba
Sau đó, bạn cần hiểu rõ về danh sách các nhà cung cấp bên thứ ba cũng như quyền riêng tư, hoạt động thu thập dữ liệu và thông tin người dùng của họ lập trường và chính sách về trải nghiệm. Sau đó, sự hiểu biết đó sẽ trở thành một phần trong chuỗi sự đánh đổi: mức độ hữu ích và quan trọng là dịch vụ, được cân bằng với mức độ xâm nhập, bất tiện hoặc gây khó chịu của người dùng. Bên thứ ba nội dung mang lại giá trị bằng cách đảm nhận phần việc khó khăn từ bạn với tư cách là chủ sở hữu trang web và cho phép bạn tập trung vào các năng lực cốt lõi của mình; và do đó, việc đánh đổi và hy sinh một số sự thoải mái cũng như quyền riêng tư cho người dùng để có được trải nghiệm tốt hơn là rất hữu ích. Tuy nhiên, điều quan trọng là không được nhầm lẫn trải nghiệm người dùng với trải nghiệm của nhà phát triển: "Nhóm phát triển của chúng tôi sẽ dễ dàng xây dựng dịch vụ" không phải là một câu chuyện hấp dẫn đối với người dùng.
Cách bạn hiểu được điều đó chính là quá trình kiểm tra.
Kiểm tra các bên thứ ba của bạn
Việc tìm hiểu hoạt động của bên thứ ba là quá trình kiểm tra. Bạn có thể thực hiện việc này cả về mặt kỹ thuật lẫn phi kỹ thuật, và cho từng bên thứ ba và cho toàn bộ bộ sưu tập của bạn.
Chạy quy trình kiểm tra phi kỹ thuật
Bước đầu tiên không liên quan đến kỹ thuật: đọc chính sách quyền riêng tư của nhà cung cấp. Nếu bạn cung cấp bất kỳ tài nguyên nào của bên thứ ba, hãy xem chính sách quyền riêng tư. Các tài liệu này sẽ dài và đầy đủ văn bản pháp lý, và một số tài liệu có thể sử dụng một số phương pháp cảnh báo cụ thể trong các học phần trước, chẳng hạn như tuyên bố quá chung chung và không có bất kỳ chỉ báo nào về cách thức hoặc thời điểm dữ liệu được thu thập sẽ bị xoá. Bạn cần hiểu rằng từ góc độ người dùng, tất cả dữ liệu được thu thập trên trang web của bạn, kể cả bởi các bên thứ ba, sẽ chịu sự điều chỉnh của các chính sách bảo mật này. Ngay cả khi bạn mọi thứ một cách chính xác, khi bạn minh bạch về các mục tiêu của mình và vượt quá kỳ vọng về quyền riêng tư đối với dữ liệu và nhạy cảm, người dùng cũng có thể yêu cầu bạn chịu trách nhiệm cho mọi hành động mà bên thứ ba mà bạn chọn. Nếu có bất kỳ nội dung nào trong chính sách quyền riêng tư của họ mà bạn không muốn đưa vào trong chính sách của mình vì việc này sẽ làm giảm tin tưởng, sau đó cân nhắc xem có nhà cung cấp nào khác không.
Đây là việc nên kết hợp với hoạt động kiểm tra kỹ thuật được thảo luận kỹ hơn vì chúng cung cấp thông tin khác. Bạn nên biết các tài nguyên của bên thứ ba mà bạn đang kết hợp vì lý do kinh doanh (chẳng hạn như mạng quảng cáo) hoặc nội dung được nhúng) bởi vì sẽ có mối quan hệ kinh doanh. Đây là thời điểm thích hợp để bắt đầu một bài tập không mang tính kỹ thuật kiểm tra. Quá trình kiểm tra về mặt kỹ thuật cũng có thể xác định được các bên thứ ba, đặc biệt là những bên được sử dụng cho mục đích hỗ trợ kỹ thuật lý do kinh doanh (thành phần bên ngoài, số liệu phân tích, thư viện tiện ích) và danh sách đó có thể tham gia với danh sách bên thứ ba tập trung vào kinh doanh. Mục tiêu ở đây là để bạn, với tư cách là chủ sở hữu trang web, cảm thấy rằng bạn hiểu những gì các bên mà bạn đang thêm vào trang web của mình và để bạn với tư cách là một doanh nghiệp có thể trình bày cho cố vấn pháp lý của mình với khoảng không quảng cáo này của bên thứ ba để đảm bảo bạn đáp ứng mọi nghĩa vụ bắt buộc.
Chạy kiểm tra kỹ thuật
Đối với một cuộc kiểm tra kỹ thuật, điều quan trọng là phải sử dụng các tài nguyên tại chỗ như một phần của trang web; tức là không tải phần phụ thuộc trong khai thác kiểm thử và kiểm tra theo cách đó. Đảm bảo bạn thấy được cách các phần phụ thuộc hoạt động như một phần của trang web thực tế, được triển khai trên Internet công cộng thay vì ở chế độ thử nghiệm hoặc phát triển. Bạn nên xem trang web của chính mình một người dùng mới. Mở trình duyệt trong một hồ sơ mới để bạn không phải đăng nhập cũng như không có thoả thuận nào được lưu trữ, sau đó thử truy cập vào trang web của bạn.
Đăng ký tài khoản mới trên trang web của riêng bạn nếu bạn cung cấp tài khoản người dùng. Nhóm thiết kế của bạn sẽ sắp xếp người dùng mới này
quá trình thu nạp người dùng từ góc độ trải nghiệm người dùng, nhưng nó có thể minh hoạ cách tiếp cận từ góc độ quyền riêng tư. Đừng chỉ nhấp vào
"Chấp nhận" về điều khoản và điều kiện, cảnh báo cookie hoặc chính sách quyền riêng tư; tự đặt nhiệm vụ sử dụng dịch vụ của chính bạn
mà không tiết lộ bất kỳ thông tin cá nhân nào hay không có cookie theo dõi nào và xem liệu bạn có thể thực hiện việc đó không và khó thực hiện như thế nào.
Cũng có thể hữu ích khi xem công cụ cho nhà phát triển của trình duyệt để biết trang web nào đang được truy cập và dữ liệu nào được chuyển đến
các trang web đó. Công cụ cho nhà phát triển cung cấp danh sách các yêu cầu HTTP riêng biệt (thường trong một phần gọi là "Mạng") và bạn có thể thấy
từ đây, các yêu cầu được nhóm theo loại (HTML, CSS, hình ảnh, phông chữ, JavaScript, các yêu cầu do JavaScript khởi tạo). Cũng có thể
thêm một cột mới để hiển thị miền của mỗi yêu cầu, cột này thể hiện số lượng địa điểm khác nhau đang được liên hệ,
và có thể có "yêu cầu của bên thứ ba" hộp đánh dấu để chỉ hiển thị bên thứ ba. (Việc sử dụng Content-Security-Policy
cũng có thể hữu ích
báo cáo để thực hiện kiểm tra liên tục để tìm hiểu thêm.)
Công cụ "Request Map Generator" (Trình tạo bản đồ) của Simon Hearne cũng có thể là công cụ tổng quan hữu ích về tất cả các yêu cầu phụ mà một trang có sẵn công khai tạo.
Đây cũng là thời điểm bạn có thể thêm các bên thứ ba tập trung vào hoạt động kinh doanh được xác định trong quá trình kiểm tra phi kỹ thuật (tức là: danh sách các công ty mà bạn có mối quan hệ tài chính để sử dụng tài nguyên của họ). Mục tiêu ở đây là để khớp với danh sách các bên thứ ba mà bạn cho rằng mình đang sử dụng (từ hồ sơ tài chính và pháp lý) với danh sách bạn đang thực sự sử dụng đang sử dụng (bằng cách xem xét những yêu cầu HTTP của bên thứ ba mà trang web của bạn thực hiện). Bạn phải xác định được những yêu cầu kỹ thuật gửi đi. Nếu bạn không xác định được các yêu cầu trong kiểm tra kỹ thuật dành cho bên thứ ba được xác định theo mối quan hệ kinh doanh, bạn phải tìm ra lý do và đưa ra hướng dẫn thử nghiệm của mình: có thể là bên thứ ba tài nguyên chỉ được tải ở một quốc gia cụ thể, trên một loại thiết bị cụ thể hoặc dành cho người dùng đã đăng nhập. Việc này sẽ mở rộng danh sách các khu vực trang web cần kiểm tra và đảm bảo rằng bạn đang nhìn thấy tất cả các lượt truy cập ra ngoài. (Hoặc có thể mã này sẽ xác định một bên thứ ba mà bạn phải trả tiền và không sử dụng, điều này luôn mang đến niềm vui cho bộ phận tài chính.)
Sau khi thu hẹp danh sách yêu cầu đến các bên thứ ba mà bạn muốn tham gia vào quá trình kiểm tra, hãy nhấp vào yêu cầu riêng lẻ sẽ hiển thị tất cả chi tiết về yêu cầu đó và cụ thể là dữ liệu nào đã được chuyển đến yêu cầu đó. Cũng rất phổ biến là một yêu cầu của bên thứ ba mà mã của bạn khởi tạo, sau đó tiếp tục thực hiện nhiều yêu cầu khác của bên thứ ba. Các bên thứ ba bổ sung này cũng được "nhập" vào chính sách quyền riêng tư của riêng bạn. Nhiệm vụ này tốn nhiều công sức nhưng có giá trị và thông tin đó thường có thể được chèn vào các bản phân tích hiện có; nhóm phát triển giao diện người dùng của bạn phải kiểm tra các yêu cầu cho lý do liên quan đến hiệu suất (có thể với sự trợ giúp của các công cụ hiện có như WebPageTest hoặc Lighthouse) và kết hợp dữ liệu và quyền riêng tư vào quy trình đó có thể dễ dàng hơn.
Nên
Mở một trình duyệt có hồ sơ người dùng mới hoàn toàn để bạn không phải đăng nhập và không có thoả thuận nào được lưu trữ; sau đó mở trình duyệt công cụ phát triển Bảng điều khiển mạng để xem tất cả các yêu cầu gửi đi. Thêm một cột mới để hiển thị miền của mỗi yêu cầu và kiểm tra "yêu cầu của bên thứ ba" hộp đánh dấu để chỉ hiển thị bên thứ ba nếu có. Sau đó:
- Truy cập vào trang web của bạn.
- Đăng ký tài khoản mới nếu bạn cung cấp tài khoản người dùng.
- Hãy thử xoá tài khoản bạn đã tạo.
- Thực hiện một hoặc hai hành động bình thường trên trang web (chính xác hành động này sẽ phụ thuộc vào hoạt động của trang web, nhưng hãy chọn hành động phổ biến mà hầu hết người dùng thực hiện).
- Thực hiện một hoặc hai hành động mà bạn biết có liên quan đến các phần phụ thuộc của bên thứ ba cụ thể. Những hành động này có thể bao gồm việc chia sẻ nội dung với mạng xã hội, bắt đầu quy trình thanh toán hoặc nhúng nội dung từ một trang web khác.
Khi thực hiện mỗi tác vụ này, hãy ghi lại các tài nguyên được yêu cầu từ những miền không phải của bạn bằng cách xem Bảng điều khiển mạng như được mô tả. Đây là một số bên thứ ba của bạn. Một cách hay để làm việc này là sử dụng các công cụ mạng của trình duyệt để nắm bắt mạng yêu cầu nhật ký trong tệp HAR.
Tệp HAR và dịch vụ ghi lại
Tệp HAR là định dạng JSON chuẩn của tất cả các yêu cầu mạng do một trang đưa ra. Để tải tệp HAR cho một trang cụ thể, tại:
Chrome
Mở Công cụ cho nhà phát triển của trình duyệt (Trình đơn > Công cụ khác > Công cụ dành cho nhà phát triển), chuyển đến bảng điều khiển Mạng, tải (hoặc làm mới) trang và chọn biểu tượng lưu mũi tên xuống ở trên cùng bên phải gần trình đơn thả xuống Không điều tiết.
Firefox
Mở công cụ cho nhà phát triển của trình duyệt (Trình đơn > Công cụ khác > Công cụ dành cho nhà phát triển web), chuyển đến bảng điều khiển Mạng, tải (hoặc làm mới) trang rồi chọn biểu tượng bánh răng ở trên cùng bên phải bên cạnh trình đơn thả xuống điều tiết. Trong trình đơn của ứng dụng, hãy chọn Lưu tất cả dưới dạng tệp HAR**.
Safari
Mở công cụ cho nhà phát triển của trình duyệt (Trình đơn > Phát triển > Hiển thị Trình kiểm tra web; nếu bạn không có trình đơn Phát triển, hãy bật trình đơn này từ Trình đơn > Safari > Lựa chọn ưu tiên > Nâng cao > Hiển thị trình đơn Phát triển trong thanh trình đơn), chuyển tới bảng điều khiển Mạng, tải (hoặc làm mới) trang, rồi chọn Xuất ở trên cùng bên phải (ở bên phải Giữ nhật ký, bạn có thể cần phóng to cửa sổ).
Để biết thêm chi tiết, bạn cũng có thể ghi lại nội dung được chuyển cho bên thứ ba (trong phần Yêu cầu), mặc dù dữ liệu này thường bị làm rối mã nguồn và không thể diễn giải hữu ích.
Các phương pháp hay nhất khi tích hợp bên thứ ba
Bạn có thể đặt chính sách của riêng mình về các bên thứ ba mà trang web của bạn sử dụng: thay đổi nhà cung cấp quảng cáo mà bạn sử dụng dựa trên hoạt động của họ, cửa sổ bật lên yêu cầu đồng ý sử dụng cookie gây khó chịu hoặc xâm phạm đến mức nào, hoặc bạn có muốn sử dụng các nút mạng xã hội trên trang web của mình hay không theo dõi các liên kết trong email hoặc liên kết utm_campaign để theo dõi trong Google Analytics trong các tweet của bạn. Một khía cạnh cần xem xét khi nào phát triển một trang web là phương thức đảm bảo quyền riêng tư và bảo mật cho dịch vụ phân tích. Một số dịch vụ phân tích thể hiện rõ ràng có khả năng bảo vệ quyền riêng tư. Thông thường, cũng có một số cách sử dụng tập lệnh của bên thứ ba. Tập lệnh này sẽ tự bổ sung khả năng bảo vệ quyền riêng tư: bạn không phải là nhóm đầu tiên tìm cách cải thiện quyền riêng tư và bảo vệ họ khỏi hoạt động thu thập dữ liệu của bên thứ ba, và có thể đã là giải pháp. Cuối cùng, nhiều nhà cung cấp bên thứ ba hiện tại nhạy cảm hơn với các vấn đề về việc thu thập dữ liệu so với trước đây. và thường có các tính năng hoặc thông số bạn có thể thêm vào để bật chế độ bảo vệ người dùng nhiều hơn. Dưới đây là một số ví dụ.
Khi thêm nút chia sẻ trên mạng xã hội
Cân nhắc nhúng các nút HTML trực tiếp: trang web https://sharingbuttons.io/ có một số ví dụ được trình bày rõ ràng. Hoặc bạn có thể thêm các đường liên kết HTML thuần tuý. Sự đánh đổi ở đây là bạn sẽ mất "số lượt chia sẻ" số liệu thống kê và khả năng phân loại khách hàng của bạn trong số liệu phân tích Facebook của bạn. Đây là ví dụ về sự đánh đổi giữa việc sử dụng nhà cung cấp bên thứ ba và việc nhận ít dữ liệu phân tích hơn.
Nói chung, khi nhúng một tiện ích tương tác thuộc loại nào đó từ bên thứ ba, bạn thường có thể cung cấp một liên kết với bên thứ ba đó. Điều này có nghĩa là trang web của bạn không có trải nghiệm tại chỗ nhưng điều này làm thay đổi quyết định chia sẻ dữ liệu của bạn với bên thứ ba đến người dùng của bạn, người dùng có thể chọn tương tác hoặc không tương tác theo ý họ.
Ví dụ: bạn có thể thêm liên kết cho Twitter và Facebook để chia sẻ dịch vụ của mình tại mysite.example.com như sau:
<a href="https://facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmysite.example.com"
rel="noopener" aria-label="Share on Facebook" target="_blank" >Share on Facebook</a>
<a href="https://twitter.com/intent/tweet/?text=My%20cool%20service!&url=https%3A%2F%2Fmysite.example.com"
rel="noopener" aria-label="Share on Twitter" target="_blank">Share on Twitter</a>
Lưu ý rằng Facebook cho phép chỉ định URL để chia sẻ và Twitter cho phép chỉ định URL và một số văn bản.
Khi nhúng video
Khi bạn nhúng video từ các trang web lưu trữ video, hãy tìm các lựa chọn bảo đảm quyền riêng tư trong mã nhúng.
Ví dụ: đối với YouTube, hãy thay thế youtube.com
trong URL nhúng bằng www.youtube-nocookie.com
để tránh theo dõi cookie
được đặt cho người dùng đang xem trang nhúng. Bạn cũng có thể chọn "Bật chế độ tăng cường bảo mật" khi tạo
Chia sẻ/Nhúng liên kết từ chính YouTube. Đây là một ví dụ hay về cách sử dụng chế độ bảo vệ người dùng chặt chẽ hơn do bên thứ ba cung cấp.
(https://support.google.com/youtube/answer/171780 mô tả điều này chi tiết hơn,
và các tuỳ chọn nhúng khác dành riêng cho YouTube).
Các trang web video khác có ít lựa chọn hơn về vấn đề này: chẳng hạn như TikTok không có cách nhúng video mà không theo dõi tại thời điểm chúng tôi viết bài này. Bạn có thể tự lưu trữ video (đây là một phương án thay thế), nhưng đó có thể là phải làm việc nhiều hơn, đặc biệt là để hỗ trợ nhiều thiết bị.
Như với các tiện ích tương tác được thảo luận trước đó, thông thường bạn có thể thay thế video được nhúng bằng liên kết đến trang web cung cấp.
Phương thức này ít tương tác hơn vì video sẽ không phát tại chỗ nhưng người dùng sẽ có quyền lựa chọn có xem cùng người dùng hay không. Thông tin này có thể là
được sử dụng làm ví dụ về "mẫu mặt tiền", tên này dùng để thay thế linh động nội dung tương tác bằng nội dung nào đó mà người dùng phải sử dụng
để kích hoạt hành động chuyển đổi đó. Bạn có thể thay thế video TikTok đã nhúng bằng đường liên kết đơn giản đến trang video TikTok, nhưng chỉ có thể sử dụng một chút
Bạn có thể truy xuất và hiển thị hình thu nhỏ cho video và biến nó thành một đường liên kết. Ngay cả khi nhà cung cấp video đã chọn không
hỗ trợ một cách dễ dàng để nhúng video mà không cần theo dõi, nhiều máy chủ lưu trữ video hỗ trợ oEmbed, một API mà khi được cung cấp
một đường liên kết đến một video hoặc nội dung được nhúng, sẽ trả về thông tin chi tiết theo chương trình, bao gồm cả hình thu nhỏ và tiêu đề. TikTok hỗ trợ oNhúng
(xem https://developers.tiktok.com/doc/embed-videos để biết chi tiết), nghĩa là
bạn có thể chuyển một đường liên kết đến video TikTok https://www.tiktok.com/@scout2015/video/6718335390845095173
thành siêu dữ liệu JSON về video đó (theo cách thủ công hoặc theo cách lập trình)
https://www.tiktok.com/oembed?url=https://www.tiktok.com/@scout2015/video/6718335390845095173
, từ đó truy xuất hình thu nhỏ
để hiển thị. WordPress thường sử dụng mã này để yêu cầu oNhúng cho nội dung được nhúng. Bạn có thể dùng tính năng này theo phương thức lập trình
để hiển thị "mặt tiền" trông tương tác và chuyển sang nhúng hoặc liên kết đến một video tương tác khi người dùng chọn nhấp vào video.
Khi nhúng tập lệnh phân tích
Analytics được thiết kế nhằm thu thập thông tin về người dùng của bạn để bạn có thể phân tích: đây là mục đích của Analytics. Về cơ bản, hệ thống phân tích để thu thập và hiển thị dữ liệu về quyền truy cập và người dùng. Việc này được thực hiện trên máy chủ của bên thứ ba, chẳng hạn như Google Analytics để dễ dàng triển khai. Ngoài ra còn có các hệ thống phân tích tự lưu trữ như https://matomo.org/, mặc dù việc này tốn nhiều công sức hơn so với việc sử dụng của bên thứ ba để giải quyết vấn đề này. Tuy nhiên, việc vận hành một hệ thống như vậy trên cơ sở hạ tầng của chính mình sẽ giúp bạn giảm bớt việc thu thập dữ liệu vì nó không rời khỏi hệ sinh thái của riêng bạn. Mặt khác, hãy quản lý, xoá dữ liệu và đặt chính sách cho dữ liệu trách nhiệm của bạn. Phần lớn mối lo ngại về hoạt động theo dõi trên nhiều trang web xảy ra khi hoạt động này được thực hiện một cách bí mật và hoặc là tác dụng phụ của việc sử dụng một dịch vụ không cần thu thập dữ liệu. Phần mềm phân tích công khai nhằm thu thập dữ liệu nhằm thông báo cho chủ sở hữu trang web về người dùng của họ.
Trong lịch sử, đã có một phương pháp thu thập tất cả dữ liệu bạn có thể về mọi thứ, chẳng hạn như lưới đánh cá khổng lồ và sau đó phân tích dữ liệu đó để tìm những mẫu đáng chú ý. Tư duy này phần lớn đã tạo ra cảm giác bất an và bất an về hoạt động thu thập dữ liệu đã được thảo luận trong phần 1 của khoá học này. Ngày nay, nhiều trang web tìm ra những câu hỏi cần đặt ra và thì mới có thể thu thập dữ liệu cụ thể và có giới hạn để trả lời những câu hỏi đó.
Nếu trang web của bạn và các trang web khác sử dụng dịch vụ nào đó của bên thứ ba và bạn có thể thêm JavaScript của họ vào trang web đó, và hệ thống sẽ đặt cookie cho từng người dùng, thì bạn cần xem xét liệu người dùng có thể đang thực hiện nhận dạng trên nhiều trang web không mong muốn; tức là theo dõi người dùng của bạn trên các trang web. Một số người có thể và một số có thể không, nhưng quan điểm bảo vệ quyền riêng tư ở đây là cho rằng một dịch vụ bên thứ ba như vậy thực sự đang theo dõi trên nhiều trang web trừ phi bạn có lý do chính đáng để suy nghĩ hoặc biết điều khác. Bản thân điều này không phải là một lý do để tránh các dịch vụ như vậy, nhưng bạn nên xem xét khi đánh giá sự cân bằng giữa những điều cần làm sử dụng chúng.
Trước đây, việc đánh đổi trong số liệu phân tích chỉ là để chọn có sử dụng hay không: thu thập tất cả dữ liệu và xâm phạm quyền riêng tư trong trao đổi để có thông tin chi tiết và lập kế hoạch hoặc bỏ qua hoàn toàn thông tin chi tiết. Tuy nhiên, điều này không còn đúng nữa và thường có một điểm trung bình giữa hai thái cực này. Liên hệ với nhà cung cấp phân tích của bạn để biết các lựa chọn cấu hình cần giới hạn dữ liệu được thu thập và giảm dung lượng cũng như thời gian lưu trữ. Vì bạn có hồ sơ của cuộc kiểm tra kỹ thuật được mô tả trước đó, bạn có thể chạy lại các phần liên quan của quy trình kiểm tra đó để xác nhận rằng việc thay đổi các cấu hình này thực sự làm giảm lượng dữ liệu được thu thập. Nếu bạn đang thực hiện chuyển đổi này trên một trang web hiện có, thì thao tác này có thể cung cấp cho bạn một số đo lường định lượng có thể được viết về cho người dùng của bạn. Ví dụ: Google Analytics có một số lựa chọn sử dụng (do đó tắt theo mặc định) các tính năng bảo vệ quyền riêng tư, nhiều tính năng trong số đó có thể hữu ích cho việc tuân thủ luật bảo vệ dữ liệu tại địa phương. Một số tuỳ chọn cần xem xét khi thiết lập Google Analytics bao gồm việc đặt khoảng thời gian lưu giữ cho dữ liệu đã thu thập (Quản trị > Thông tin theo dõi > Giữ lại dữ liệu) thấp hơn khoảng thời gian mặc định là 26 tháng, và áp dụng một số giải pháp kỹ thuật hơn như ẩn danh IP một phần (xem https://support.google.com/analytics/answer/9019185 để biết thêm chi tiết).
Sử dụng bên thứ ba theo cách bảo đảm quyền riêng tư
Tới đây, chúng ta đã thảo luận về cách bảo vệ người dùng khỏi các bên thứ ba trong giai đoạn thiết kế ứng dụng, đồng thời bạn đang lên kế hoạch cho những việc ứng dụng đó sẽ làm. Quyết định không sử dụng một bên thứ ba cụ thể là một phần trong kế hoạch này, và việc kiểm tra các trường hợp sử dụng cũng thuộc danh mục này: đó là việc ra quyết định về quan điểm của bạn về quyền riêng tư. Tuy nhiên, những các quyết định vốn không chi tiết lắm; việc chọn sử dụng một bên thứ ba cụ thể hay chọn không sử dụng không phải là một quyết định cầu kỳ. Rất có khả năng bạn sẽ muốn một điều gì đó ở giữa: cần hoặc dự định sử dụng một dịch vụ cụ thể của bên thứ ba, nhưng giảm thiểu mọi xu hướng xâm phạm quyền riêng tư (cho dù là cố ý hay vô tình). Đây là nhiệm vụ bảo vệ người dùng tại "thời gian xây dựng": thêm các biện pháp bảo vệ để giảm tác hại mà bạn không lường trước. Tất cả đều là tiêu đề HTTP mới mà bạn có thể cung cấp khi phân phát và sẽ gợi ý hoặc ra lệnh cho tác nhân người dùng thực hiện một số quan điểm nhất định về quyền riêng tư hoặc bảo mật.
Chính sách liên kết giới thiệu
Nên
Đặt chính sách strict-origin-when-cross-origin
hoặc noreferrer
để ngăn các trang web khác nhận được tiêu đề Tham chiếu
khi bạn liên kết đến những tài nguyên này hoặc khi chúng được tải dưới dạng tài nguyên phụ qua một trang:
index.html:
<meta name="referrer" content="strict-origin-when-cross-origin" />
Hoặc phía máy chủ, ví dụ như trong Express:
const helmet = require('helmet');
app.use(helmet.referrerPolicy({policy: 'strict-origin-when-cross-origin'}));
Nếu cần, hãy đặt một chính sách nới lỏng hơn cho các phần tử hoặc yêu cầu cụ thể.
Lý do điều này bảo vệ quyền riêng tư của người dùng
Theo mặc định, mỗi yêu cầu HTTP mà trình duyệt thực hiện chuyển qua một tiêu đề Referer
chứa URL của trang khởi tạo yêu cầu.
cho dù là đường liên kết, hình ảnh được nhúng
hay tập lệnh. Đây có thể là vấn đề về quyền riêng tư vì các URL có thể chứa thông tin riêng tư và các URL đó
được cung cấp cho bên thứ ba sẽ chuyển thông tin riêng tư đó cho họ. Web.dev liệt kê một số ví dụ
URL chứa dữ liệu cá nhân—việc biết rằng người dùng đã truy cập vào trang web của bạn từ https://social.example.com/user/me@example.com
sẽ cho bạn biết người dùng đó là ai,
đó là sự rò rỉ chắc chắn. Nhưng ngay cả một URL không tự hiển thị thông tin riêng tư cũng làm lộ thông tin của người dùng cụ thể này (những người bạn có thể biết,
nếu họ đăng nhập) đến đây từ một trang web khác và do đó, điều này cho thấy rằng người dùng này đã truy cập trang web khác đó. Điều này tức là bản thân nó phơi bày
mà có thể bạn không nên biết về lịch sử duyệt web của người dùng.
Việc cung cấp tiêu đề Referrer-Policy
(đúng chính tả!) cho phép bạn thay đổi tiêu đề này để một số hoặc không có URL giới thiệu nào được chuyển vào.
MDN liệt kê đầy đủ thông tin chi tiết nhưng hầu hết các trình duyệt đều không có
hiện đã áp dụng giá trị giả định là strict-origin-when-cross-origin
theo mặc định, có nghĩa là URL liên kết giới thiệu hiện được chuyển đến vị trí thứ ba
các bên làm nguồn gốc (https://web.dev
thay vì https://web.dev/learn/privacy
). Đây là một biện pháp bảo vệ quyền riêng tư hữu ích mà không
bạn phải làm bất cứ việc gì. Tuy nhiên, bạn có thể thắt chặt hơn nữa bằng cách chỉ định Referrer-Policy: same-origin
để tránh truyền bất kỳ
thông tin liên kết giới thiệu cho các bên thứ ba (hoặc Referrer-Policy: no-referrer
để tránh truyền cho bất kỳ ai kể cả nguồn gốc của bạn).
(Đây là một ví dụ hay về sự cân bằng giữa quyền riêng tư và tiện ích; chế độ mặc định mới giúp bảo đảm quyền riêng tư hiệu quả hơn nhiều so với trước đây, nhưng
vẫn cung cấp thông tin cấp cao cho các bên thứ ba mà bạn chọn, chẳng hạn như nhà cung cấp phân tích của bạn.)
Bạn cũng nên chỉ định rõ ràng tiêu đề này vì khi đó bạn sẽ biết chính xác chính sách là gì, thay vì dựa vào các giá trị mặc định của trình duyệt.
Nếu không thể đặt tiêu đề, thì bạn có thể đặt chính sách đường liên kết giới thiệu cho toàn bộ trang HTML bằng cách sử dụng một phần tử meta trong <head>
:
<meta name="referrer" content="same-origin">
; và nếu lo ngại về các bên thứ ba cụ thể, bạn cũng có thể đặt referrerpolicy
trên các phần tử riêng lẻ như <script>
, <a>
hoặc <iframe>
: <script src="https://thirdparty.example.com/data.js" referrerpolicy="no-referrer">
Content-Security-Policy
Tiêu đề Content-Security-Policy
, thường gọi là "CSP", cho biết tài nguyên bên ngoài có thể được tải từ đâu.
Công cụ này chủ yếu được sử dụng cho mục đích bảo mật, bằng cách ngăn chặn các cuộc tấn công tập lệnh trên nhiều trang web và chèn tập lệnh, nhưng khi được sử dụng
cùng với các lần kiểm tra thông thường, việc này cũng có thể giới hạn nơi các bên thứ ba mà bạn chọn có thể truyền dữ liệu đến.
Đây có thể là một trải nghiệm người dùng kém tuyệt vời; nếu một trong các tập lệnh bên thứ ba bắt đầu tải phần phụ thuộc từ một điểm gốc không có trong danh sách của bạn thì yêu cầu đó sẽ bị chặn, tập lệnh sẽ không thành công và ứng dụng của bạn có thể bị lỗi (hoặc ít nhất là giảm xuống phiên bản dự phòng không thành công JavaScript). Điều này rất hữu ích khi CSP được triển khai vì mục đích bảo mật, đây là mục đích thông thường của API này: bảo vệ khỏi các vấn đề về tập lệnh trên nhiều trang web (và để thực hiện điều này, hãy sử dụng một CSP nghiêm ngặt). Sau khi biết tất cả các tập lệnh cùng dòng mà trang của bạn sử dụng, bạn có thể tạo một danh sách các tập lệnh đó, tính toán giá trị băm hoặc thêm giá trị ngẫu nhiên (gọi là "số chỉ dùng một lần") cho mỗi danh sách, sau đó thêm danh sách hàm băm vào Chính sách bảo mật nội dung của bạn. Việc này sẽ ngăn chặn mọi tập lệnh không có trong danh sách được tải. Bước này cần được đưa vào quá trình sản xuất cho trang web: tập lệnh trong các trang của bạn cần để thêm số chỉ dùng một lần hoặc tính toán hàm băm trong quá trình tạo bản dựng. Hãy xem bài viết vềStrict-csp để biết toàn bộ thông tin chi tiết.
Rất may là các trình duyệt có hỗ trợ tiêu đề có liên quan là Content-Security-Policy-Report-Only
. Nếu tiêu đề này được cung cấp, yêu cầu
vi phạm chính sách đã cung cấp sẽ không bị chặn, mà sẽ có báo cáo JSON được gửi đến URL được cung cấp. Một tiêu đề như vậy có thể
sẽ có dạng như sau:
Content-Security-Policy-Report-Only: script-src 3p.example.com; report-uri https://example.com/report/
,
và nếu trình duyệt tải tập lệnh từ bất kỳ nơi nào khác ngoài 3p.example.com
, yêu cầu đó sẽ thành công nhưng báo cáo sẽ
sẽ được gửi đến report-uri
được cung cấp. Thông thường, chính sách này sẽ được dùng để thử nghiệm một chính sách trước khi triển khai, nhưng việc này hữu ích
ý tưởng ở đây là sử dụng dữ liệu này làm phương thức tiến hành "cuộc đánh giá liên tục". Cũng như quy trình kiểm tra thông thường mà bạn mô tả trước đó, bạn
có thể bật tính năng báo cáo CSP để xem liệu có miền ngoài dự kiến nào xuất hiện hay không (tức là các tài nguyên bên thứ ba của bạn đang tải)
tài nguyên của riêng họ cũng như những tài nguyên bạn cần xem xét và đánh giá. (Đó cũng có thể là dấu hiệu của một số trang web
tất nhiên, việc khai thác tập lệnh đã vượt qua ranh giới bảo mật của bạn cũng là điều quan trọng cần phải biết!)
Content-Security-Policy
là một API phức tạp và khó sử dụng. Điều này đã được biết đến và đang nỗ lực xây dựng "thế hệ tiếp theo" của CSP
sẽ đáp ứng cùng mục tiêu nhưng không quá phức tạp khi sử dụng.Tính năng này chưa sẵn sàng, nhưng nếu bạn muốn biết kết quả
(hoặc để tham gia và trợ giúp về thiết kế của ứng dụng này!) thì hãy truy cập vào https://github.com/WICG/csp-next để biết thông tin chi tiết.
Nên
Thêm tiêu đề HTTP này vào các trang được phân phát: Content-Security-Policy-Report-Only: default-src 'self'; report-uri https://a-url-you-control
.
Khi JSON được đăng lên URL đó, hãy lưu trữ nó. Kiểm tra dữ liệu đã lưu trữ đó để thu thập một tập hợp các miền của bên thứ ba mà trang web của bạn yêu cầu khi người dùng khác truy cập.
Cập nhật tiêu đề Content-Security-Policy-Report-Only
để liệt kê các miền bạn dự kiến, cũng như xem thời điểm danh sách đó thay đổi:
Content-Security-Policy-Report-Only: default-src 'self' https://expected1.example.com https://expected2.example.com ; report-uri https://a-url-you-control
Lý do
Việc này tạo thành một phần của quá trình kiểm tra kỹ thuật và diễn ra liên tục. Cuộc kiểm tra kỹ thuật ban đầu mà bạn thực hiện sẽ cung cấp cho bạn
danh sách bên thứ ba mà trang web của bạn chia sẻ hoặc chuyển dữ liệu người dùng đến. Sau đó, tiêu đề này sẽ khiến các yêu cầu trang báo cáo
thông tin về những bên thứ ba hiện đang được liên hệ và bạn có thể theo dõi các thay đổi theo thời gian. Thông báo này không chỉ cảnh báo bạn về những thay đổi
do các bên thứ ba hiện tại của bạn thực hiện, nhưng cũng sẽ gắn cờ các bên thứ ba mới được thêm vào chưa được thêm vào quá trình kiểm tra kỹ thuật.
Bạn cần phải cập nhật tiêu đề để ngừng báo cáo về các miền mà bạn muốn, nhưng bạn cũng nên lặp lại hướng dẫn
kiểm tra kỹ thuật tuỳ từng thời điểm (vì phương pháp Content-Security-Policy
không gắn cờ nội dung dữ liệu được chuyển mà chỉ
một yêu cầu đã được thực hiện).
Xin lưu ý rằng bạn không cần thêm lượt chuyển đổi này vào các trang được phân phát mỗi lần hoặc mọi trang. Giảm số lượng phản hồi trang nhận được tiêu đề để bạn nhận được mẫu báo cáo đại diện không quá tải về số lượng.
Chính sách về quyền
Tiêu đề Permissions-Policy
(được ra mắt dưới tên Feature-Policy
) về khái niệm tương tự như Content-Security-Policy
,
nhưng hạn chế quyền truy cập vào các tính năng mạnh mẽ của trình duyệt. Ví dụ: bạn có thể hạn chế việc sử dụng phần cứng thiết bị như gia tốc kế,
máy ảnh hoặc thiết bị USB hoặc để hạn chế các tính năng không phải phần cứng, chẳng hạn như quyền chuyển sang chế độ toàn màn hình hoặc sử dụng XMLHTTPRequest
đồng bộ.
Bạn có thể áp dụng những hạn chế này cho trang cấp cao nhất (để tránh việc các tập lệnh đã tải cố gắng sử dụng các tính năng này) hoặc để
các trang con được tải vào qua iframe. Hạn chế này đối với việc sử dụng API không thực sự liên quan đến việc tạo vân tay số trên trình duyệt; nội dung này là không cho phép bên thứ ba thực hiện những thao tác xâm nhập (chẳng hạn như sử dụng các API mạnh mẽ, cửa sổ bật lên)
cửa sổ quyền, v.v.). Hành vi này được định nghĩa trong Mô hình mối đe doạ về quyền riêng tư mục tiêu là "xâm nhập".
Tiêu đề Permissions-Policy
được chỉ định dưới dạng một danh sách các cặp (tính năng, nguồn gốc được phép), do đó:
Permissions-Policy: geolocation=(self "https://example.com"), camera=(), fullscreen=*
Ví dụ này cho phép trang này ("self") và <iframe>
từ example.com
gốc sử dụng các API navigator.geolocation
từ JavaScript; nó cho phép trang này và tất cả các khung phụ sử dụng API toàn màn hình, đồng thời cấm mọi trang, bao gồm trang này
từ việc sử dụng camera để đọc thông tin video. Bạn có thể xem thêm thông tin chi tiết và danh sách các ví dụ có thể áp dụng tại đây.
Danh sách các tính năng do tiêu đề Chính sách quyền xử lý rất lớn và có thể thay đổi liên tục. Hiện tại, danh sách là được duy trì tại https://github.com/w3c/webappsec-permissions-policy/blob/main/features.md.
Nên
Theo mặc định, các trình duyệt hỗ trợ Permissions-Policy
không cho phép các tính năng mạnh mẽ trong khung phụ và bạn phải hành động để bật các tính năng đó!
Đây là phương pháp riêng tư theo mặc định. Nếu thấy rằng các khung phụ trên trang web của bạn yêu cầu các quyền này, bạn có thể thêm chúng một cách có chọn lọc.
Tuy nhiên, không có chính sách quyền nào được áp dụng cho trang chính theo mặc định nên các tập lệnh (kể cả tập lệnh của bên thứ ba)
do trang chính tải không bị hạn chế sử dụng các tính năng này. Vì lý do này, bạn nên áp dụng quy tắc hạn chế
Permissions-Policy
vào tất cả các trang theo mặc định, sau đó thêm lại dần những tính năng mà các trang của bạn yêu cầu.
Ví dụ về các tính năng mạnh mẽ mà Permissions-Policy
tác động đến: yêu cầu thông tin vị trí của người dùng, quyền sử dụng các cảm biến (bao gồm cả
gia tốc kế, con quay hồi chuyển và từ kế), quyền xem ở chế độ toàn màn hình và yêu cầu quyền truy cập vào máy ảnh và micrô của người dùng.
Danh sách đầy đủ các tính năng (đang thay đổi) được liên kết bên trên.
Rất tiếc, việc chặn tất cả tính năng theo mặc định rồi sau đó cấp lại có chọn lọc yêu cầu bạn phải liệt kê tất cả tính năng trong tiêu đề.
và điều này khiến họ cảm thấy khá thiếu tha thiết. Tuy nhiên, bạn nên bắt đầu bằng tiêu đề Permissions-Policy
như vậy. permissionspolicy.com/
có một trình tạo có thể nhấp thuận tiện để tạo tiêu đề như vậy: sử dụng trình tạo này để tạo tiêu đề sẽ vô hiệu hoá tất cả tính năng dẫn đến điều này:
Permissions-Policy: accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(),
display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(),
fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), navigation-override=(),
payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()
Tìm hiểu các tính năng tích hợp sẵn về quyền riêng tư trong trình duyệt web
Ngoài "thời gian xây dựng" và "thời gian thiết kế" bảo vệ quyền riêng tư, còn có các biện pháp bảo vệ quyền riêng tư diễn ra tại "thời gian chạy": tức là quyền riêng tư được triển khai trong chính trình duyệt để bảo vệ người dùng. Đây không phải là những tính năng bạn có thể trực tiếp kiểm soát hoặc nhấn vào dưới dạng một trang web nhà phát triển—chúng là các tính năng sản phẩm—nhưng đó là những tính năng bạn nên biết, vì các quyết định về sản phẩm này có thể ảnh hưởng đến trang web của bạn trong trình duyệt. Để đưa ra ví dụ tại đây về tác động của các biện pháp bảo vệ trên trình duyệt này đối với trang web của bạn, nếu bạn có JavaScript phía máy khách đang chờ để phần phụ thuộc của bên thứ ba tải trước khi tiếp tục thiết lập trang và phần phụ thuộc của bên thứ ba đó không hề tải, thì khi đó bạn thiết lập trang có thể không bao giờ hoàn tất và do đó, người dùng sẽ nhìn thấy trang được tải một nửa.
Chẳng hạn như tính năng Ngăn chặn theo dõi thông minh trong Safari (và công cụ WebKit cơ bản) và tính năng Chống theo dõi nâng cao trong Firefox (và công cụ của nó, Gecko). Tất cả những điều này gây khó khăn cho bên thứ ba trong việc xây dựng hồ sơ chi tiết về người dùng của bạn.
Cách tiếp cận của trình duyệt đối với các tính năng về quyền riêng tư thay đổi thường xuyên và điều quan trọng là bạn phải duy trì cập nhật; danh sách biện pháp bảo vệ sau đây
là chính xác tại thời điểm viết bài. Các trình duyệt cũng có thể triển khai các biện pháp bảo vệ khác; thì đây chưa phải là danh sách đầy đủ. Xem mô-đun về các phương pháp hay nhất
để biết cách cập nhật các thay đổi tại đây, cũng như đừng quên thử nghiệm với các phiên bản trình duyệt sắp tới để biết những thay đổi có thể ảnh hưởng đến dự án của bạn.
Xin lưu ý rằng đôi khi, các chế độ duyệt web ẩn danh/riêng tư sẽ triển khai các chế độ cài đặt khác với chế độ mặc định của trình duyệt (cookie của bên thứ ba có thể bị chặn
theo mặc định ở các chế độ như vậy). Do đó, thử nghiệm ở chế độ ẩn danh có thể không phải lúc nào cũng phản ánh được trải nghiệm duyệt web thông thường của hầu hết người dùng nếu
họ không sử dụng tính năng duyệt web ở chế độ riêng tư. Ngoài ra, xin lưu ý rằng việc chặn cookie trong nhiều trường hợp có thể đồng nghĩa với việc các giải pháp lưu trữ khác, chẳng hạn như window.localStorage
,
cũng bị chặn chứ không chỉ cookie.
Chrome
- Cookie của bên thứ ba sẽ bị chặn trong tương lai. Tại thời điểm viết bài này, các cookie không bị chặn theo mặc định (nhưng người dùng có thể bật tính năng này): https://support.google.com/chrome/answer/95647 giải thích chi tiết.
- các tính năng bảo mật của Chrome, cụ thể là các tính năng trong Chrome kết nối với các dịch vụ của Google và bên thứ ba, được mô tả tại privacysandbox.com/.
Edge
- Cookie của bên thứ ba không bị chặn theo mặc định (nhưng người dùng có thể bật tính năng này).
- Các khối tính năng Ngăn chặn theo dõi của Edge trình theo dõi từ các trang web chưa được truy cập và trình theo dõi gây hại đã biết sẽ bị chặn theo mặc định.
Firefox
- Cookie của bên thứ ba không bị chặn theo mặc định (nhưng người dùng có thể bật tính năng này).
- Tính năng Chống theo dõi nâng cao của Firefox chặn theo cookie theo dõi mặc định, tập lệnh tạo vân tay số, tập lệnh Cryptominer và công cụ theo dõi đã biết. (https://support.mozilla.org/kb/trackers-and-scripts-firefox-blocks-enhanced-track cung cấp thêm một số chi tiết).
- Cookie của bên thứ ba chỉ giới hạn ở trang web, vì vậy, về cơ bản, mỗi trang web đều có một ngăn cookie riêng và không thể tương quan với nhau ( Mozilla gọi mục này là "Total Cookie Security" (Tổng bảo vệ cookie).
Để biết một số thông tin chi tiết về những gì có thể bị chặn và giúp gỡ lỗi, hãy nhấp vào biểu tượng tấm khiên trong thanh địa chỉ hoặc truy cập about:protections
trong Firefox (trên máy tính).
Safari
- Cookie của bên thứ ba bị chặn theo mặc định.
- Trong tính năng Ngăn chặn theo dõi thông minh,
Safari giảm đường liên kết giới thiệu được chuyển đến các trang khác để trở thành trang web cấp cao nhất thay vì một trang cụ thể: (
https://something.example.com
, thay vìhttps://something.example.com/this/specific/page
). - Dữ liệu của trình duyệt
localStorage
sẽ bị xoá sau 7 ngày.
(https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more/ tóm tắt các tính năng này.)
Để nhận một số thông tin chi tiết về những nội dung có thể bị chặn và giúp gỡ lỗi các vấn đề, hãy bật "Chế độ gỡ lỗi chống theo dõi thông minh" trong Safari trình đơn dành cho nhà phát triển (trên máy tính). (Hãy tham khảo https://webkit.org/blog/9521/intelligent-tracking-prevention-2-3/ để biết thêm chi tiết.)
Đề xuất API
Tại sao chúng ta cần API mới?
Trong khi các tính năng và chính sách bảo đảm quyền riêng tư mới trong các sản phẩm trình duyệt giúp bảo vệ quyền riêng tư của người dùng, chúng cũng đi kèm với một số thách thức. Nhiều công nghệ web có thể sử dụng được để theo dõi trên nhiều trang web mặc dù được thiết kế và sử dụng cho các mục đích khác. Ví dụ: nhiều hệ thống liên kết danh tính mà chúng tôi sử dụng mỗi ngày đều dựa vào cookie của bên thứ ba. Nhiều giải pháp quảng cáo mà nhà xuất bản dựa vào doanh thu hiện nay được xây dựng dựa trên cookie của bên thứ ba. Nhiều giải pháp phát hiện gian lận dựa vào tạo vân tay số. Mục tiêu sẽ xảy ra với các trường hợp sử dụng này khi cookie của bên thứ ba và vân tay số không còn xuất hiện?
Các trình duyệt sẽ gặp khó khăn và dễ gặp lỗi khi phân biệt các trường hợp sử dụng và phân biệt một cách đáng tin cậy những trường hợp sử dụng vi phạm quyền riêng tư từ những người khác. Đây là lý do hầu hết các trình duyệt lớn đều chặn cookie của bên thứ ba và tạo vân tay số hoặc có ý định làm như vậy để bảo vệ người dùng quyền riêng tư.
Cần có một phương pháp mới: khi cookie của bên thứ ba bị loại bỏ và giảm thiểu dấu vân tay, nhà phát triển cần có các API được thiết kế riêng cho từng mục đích đáp ứng các trường hợp sử dụng (vẫn chưa bị loại bỏ) nhưng được thiết kế theo cách bảo đảm quyền riêng tư. Mục tiêu là thiết kế và tạo Các API không được dùng để theo dõi trên nhiều trang web. Không giống như các tính năng trình duyệt được mô tả trong phần trước, các công nghệ này mong muốn trở thành API trên nhiều trình duyệt.
Ví dụ về đề xuất API
Danh sách sau đây chưa đầy đủ, chỉ là một phần giới thiệu về một số nội dung đang được thảo luận.
Ví dụ về đề xuất API để thay thế công nghệ được xây dựng dựa trên cookie của bên thứ ba:
- Các trường hợp sử dụng danh tính: FedCM
- Các trường hợp sử dụng quảng cáo: Đo lường lượt nhấp riêng tư, Mô hình phân bổ riêng tư có thể tương tác, Báo cáo phân bổ, Chủ đề, FLEDGE, PARAKEET.
Ví dụ về đề xuất API để thay thế các công nghệ được xây dựng dựa trên tính năng theo dõi thụ động:
- Các trường hợp sử dụng tính năng phát hiện gian lận: Trust Tokens.
Ví dụ về các đề xuất khác mà các API khác có thể xây dựng trong tương lai mà không cần cookie của bên thứ ba:
Ngoài ra, cũng đang xuất hiện một loại đề xuất API khác để thử và áp dụng các giải pháp giảm thiểu hoạt động theo dõi bí mật dành riêng cho trình duyệt cho đến nay. Một ví dụ là Ngân sách quyền riêng tư. Trên những trường hợp sử dụng, các API mà Chrome đề xuất ban đầu sẽ hoạt động theo thuật ngữ chung là Hộp cát về quyền riêng tư.
Global-Privacy-Control (Kiểm soát quyền riêng tư trên toàn cầu) là tiêu đề có mục đích giao tiếp với một trang web mà người dùng không muốn chia sẻ dữ liệu cá nhân đã thu thập với các trang web khác. Mục đích của tính năng này tương tự như mục Không theo dõi đã ngừng hoạt động.
Trạng thái của các đề xuất API
Hầu hết các đề xuất API này chưa được triển khai hoặc chỉ được triển khai sau khi được gắn cờ hoặc trong các môi trường hạn chế để thử nghiệm.
Giai đoạn phát triển công khai này rất quan trọng: các nhà cung cấp trình duyệt và nhà phát triển sẽ thu thập cuộc thảo luận và trải nghiệm về việc liệu các API này có hữu ích và liệu chúng có thực sự làm những gì được thiết kế cho chúng hay không. Các nhà phát triển, nhà cung cấp trình duyệt và các tác nhân khác của hệ sinh thái sẽ sử dụng giai đoạn này để lặp lại thiết kế của API.
Nơi tốt nhất để cập nhật thông tin về các API mới đang được đề xuất hiện là danh sách đề xuất của Nhóm quyền riêng tư trên GitHub.
Bạn có cần sử dụng các API này không?
Nếu sản phẩm của bạn được xây dựng trực tiếp dựa trên cookie của bên thứ ba hoặc các kỹ thuật như tạo vân tay số, bạn nên tham gia vào các API mới này, thử nghiệm chúng và đóng góp kinh nghiệm của riêng mình vào các cuộc thảo luận và thiết kế API. Trong tất cả các trường hợp khác, bạn không nhất thiết phải biết tất cả chi tiết về các API mới này tại thời điểm viết bài, nhưng bạn nên nắm rõ những gì sắp tới.