Phân biệt same-site và same-origin

Bài viết được sự cho phép của tác giả Lưu Bình An

1. Origin

Phân biệt same-site và same-origin

origin = scheme + host name + port

Ví dụ nếu có URL là: https:///www.example.com:443/foo thì origin của nó là https://www.example.com:443

  .NET core vs ASP.NET core: Phân biệt .NET Framework, .NET Core và Mono
  10 lý do kiểm thử phần mềm trở thành một nghề thời thượng

Vậy same-origin tức là những url có cùng scheme, host name, port, ngược lại thì gọi là cross-origin

Origin A Origin B
https://www.example.com:443 https://example.com:443 cross-origin: khác subdomain
https://www.evil.com:443 cross-origin: khác domain
https://login.example.com:443 cross-origin: khác subdomain
http://www.example.com:443 cross-origin: khác scheme
https://www.example.com:80 cross-origin: khác port
https://www.example.com same-origin: ngầm hiểu cùng port 443 (port mặc định của web)

2. Site

Top-level domains (TLDs) như .com.org được liệt kê trong trang này

site =TLD + phần ngay phía trước domain

Với ví dụ trên, thì site = example.com

Tuy nhiên với những tên miền kiểu .com.vngithub.io, cách xác định site này không còn đúng, nên người ta tạo thêm danh sách effective TLDs (eTLDs)xem chi tiết publicsuffix.org/list

Ví dụ, URL https://my-project.github.io thì site = my-project.github.io

Vậy same-site là những url có cùng site, ngược lại được gọi là cross-site

URL A URL B
https://www.example.com:443 https://www.evil.com:443 cross-site: khác domain
https://login.example.com:443 same-site: khác subdomain không sao
http://www.example.com:443 same-site: khác scheme không sao
https://www.example.com:80 same-site: khác port không sao
https://www.example.com same-site

Gần đây khái niệm same-site được mở rộng và bao gồm luôn scheme

Nếu tính luôn scheme, thì http://example.com và https://example.com là cross-site vì khác scheme

“same-site” và “cross-site” #

Các trang web có cùng eTLD + 1 được coi là “cùng một trang web”. Các trang web có eTLD + 1 khác là “trang web chéo”.

Xuất xứ A Xuất xứ B Giải thích về việc Xuất xứ A và B là “cùng một trang web” hay “trang web chéo”
https://www.example.com:443 https: // www.evil.com : 443 cross-site: các miền khác nhau
https: // đăng nhập .example.com: 443 cùng một trang web: các tên miền phụ khác nhau không quan trọng
http : //www.example.com: 443 cùng một trang web: các chương trình khác nhau không quan trọng
https://www.example.com: 80 cùng một trang web: các cổng khác nhau không quan trọng
https://www.example.com:443 cùng trang web: đối sánh chính xác
https://www.example.com cùng trang web: các cổng không quan trọng

“schemeful same-site”

cùng một địa điểm

Định nghĩa “cùng một trang web” đang được phát triển để coi lược đồ URL là một phần của trang web nhằm ngăn chặn HTTP được sử dụng như một kênh yếu . Khi các trình duyệt chuyển sang phần diễn giải này, bạn có thể thấy các tham chiếu đến “trang web ít sơ đồ hơn” khi tham chiếu đến định nghĩa cũ hơn và ” trang web có sơ đồ tương tự ” tham chiếu đến định nghĩa chặt chẽ hơn. Trong trường hợp đó, http://www.example.comvà https://www.example.comđược coi là trang web chéo vì các lược đồ không khớp.

Xuất xứ A Xuất xứ B Giải thích về việc Xuất xứ A và B có phải là “cùng một trang web được sơ đồ hóa” hay không
https://www.example.com:443 https: // www.evil.com : 443 cross-site: các miền khác nhau
https: // đăng nhập .example.com: 443 cùng một trang web có kế hoạch: các tên miền phụ khác nhau không quan trọng
http : //www.example.com: 443 cross-site: các chương trình khác nhau
https://www.example.com: 80 cùng một trang web có sơ đồ: các cổng khác nhau không quan trọng
https://www.example.com:443 cùng một trang web có kế hoạch: kết hợp chính xác
https://www.example.com cùng một trang web có kế hoạch: các cổng không quan trọng

Cách kiểm tra xem một yêu cầu là “cùng trang web”, “cùng nguồn gốc” hay “trang web chéo” #

Chrome gửi yêu cầu cùng với Sec-Fetch-Sitetiêu đề HTTP. Không có trình duyệt nào khác hỗ trợ Sec-Fetch-Sitekể từ tháng 4 năm 2020. Đây là một phần của đề xuất Tiêu đề yêu cầu siêu dữ liệu tìm nạp lớn hơn . Tiêu đề sẽ có một trong các giá trị sau:

  • cross-site
  • same-site
  • same-origin
  • none

Bằng cách kiểm tra giá trị của Sec-Fetch-Site, bạn có thể xác định xem yêu cầu là “cùng một trang web”, “cùng một nguồn gốc” hay “trang web chéo” (“sơ đồ cùng một trang web” không được nắm bắt Sec-Fetch-Site).

Bài viết gốc được đăng tải tại vuilaptrinh.com

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev