อ่าน 5 นาที
คำแนะนำสำหรับลูกค้า
Client Hints คือส่วนขยายของ โปรโตคอล HTTP ที่อนุญาตให้เซิร์ฟเวอร์ขอข้อมูลเกี่ยวกับการตั้งค่าจากไคลเอ็นต์ (โดยปกติคือ เว็บเบราว์เซอร์ )...
คำแนะนำสำหรับลูกค้า
| มาตรฐานสากล |
|
|---|---|
| พัฒนาโดย | กูเกิล , W3C |
| เว็บไซต์ | https://wicg.github.io/ua-client-hints/ |
Client Hintsคือส่วนขยายของ โปรโตคอล HTTPที่อนุญาตให้เซิร์ฟเวอร์ขอข้อมูลเกี่ยวกับการตั้งค่าจากไคลเอ็นต์ (โดยปกติคือเว็บเบราว์เซอร์ ) ซึ่งจะช่วยให้เซิร์ฟเวอร์ปรับแต่งการตอบสนองให้เหมาะสมกับไคลเอ็นต์ ตัวอย่างเช่น เซิร์ฟเวอร์สามารถเลือกที่จะส่งภาพขนาดเล็กกว่าหากไคลเอ็นต์แจ้งว่ามีหน้าจอขนาดเล็กมาก ไคลเอ็นต์สามารถเลือกที่จะตอบสนองต่อคำขอโดยการแจ้งข้อมูลเกี่ยวกับตัวเองที่ร้องขอโดยการส่งข้อมูลโดยใช้ส่วนเฉพาะของโปรโตคอล HTTP ที่เรียกว่าฟิลด์ส่วนหัว HTTPหรือโดยการเปิดเผยข้อมูลเดียวกันนั้นให้กับ โค้ด JavaScriptที่กำลังทำงานอยู่บนหน้าเว็บ
Client Hints เป็นแนวคิดที่วิศวกรของ Googleเสนอขึ้นในปี 2013 โดยออกแบบมาเพื่อเป็นทางเลือกที่เน้นความเป็นส่วนตัว แทน User-Agent Headersซึ่งเป็นส่วนหนึ่งของโครงการPrivacy Sandbox ของ Google User-Agent Headers คือโค้ดสั้นๆ ที่ส่งจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์เพื่อระบุตัวตน ในตอนแรกนั้นมีจุดประสงค์เพื่อใช้ในเชิงสถิติ แต่ Headers เหล่านี้กลับกลายเป็นเครื่องมือในการติดตามผู้ใช้ข้ามเว็บไซต์มากขึ้นเรื่อยๆ Client Hints มีเป้าหมายที่จะแก้ไขปัญหานี้โดยการนำเสนอวิธีการแบ่งปันข้อมูลเดียวกันในรูปแบบที่มีการควบคุมมากขึ้น แม้จะเน้นเรื่องความเป็นส่วนตัว แต่การออกแบบ Client Hints ในช่วงแรกก็ได้รับการวิพากษ์วิจารณ์จากเบราว์เซอร์อื่นๆ หนึ่งในข้อกังวลหลักคือ โปรโตคอลนี้อาจทำให้เกิดการติดตาม รูปแบบใหม่ โดยโดเมนบุคคลที่สาม โดเมนบุคคลที่สามคือเว็บเซิร์ฟเวอร์ที่ไม่ได้เป็นเจ้าของโดยเว็บไซต์นั้นๆ ซึ่งทำหน้าที่โหลดทรัพยากรต่างๆ เช่น รูปภาพและไฟล์สคริปต์ อย่างไรก็ตาม Chrome ก็ได้นำ Client Hints มาใช้งานในเดือนสิงหาคม 2020 และภายในปี 2024 ผู้ใช้เว็บกว่า 75% ใช้เบราว์เซอร์ที่รองรับ Client Hints แล้ว
นักวิจัยด้านความเป็นส่วนตัวได้แสดงความกังวลว่า Client Hints นั้นถูกใช้งานโดยโค้ด JavaScript เป็นหลัก ซึ่งใช้ในการติดตามผู้ใช้ ในปี 2023 การศึกษาจาก มหาวิทยาลัย KU Leuvenและมหาวิทยาลัย Radboudพบว่า เมื่อตรวจสอบเว็บไซต์ 100,000 อันดับแรกบนอินเทอร์เน็ต การเข้าถึง Client Hints ส่วนใหญ่มาจากโค้ด JavaScript ที่ใช้เพื่อการติดตามและ โฆษณา
พื้นหลัง
ในปี พ.ศ. 2535 ได้มีการนำส่วนขยายของ โปรโตคอล HTTPมาใช้ โดยเพิ่มUser-Agentส่วนหัว HTTPซึ่งส่งจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์ และประกอบด้วยสตริงง่ายๆ ที่ระบุชื่อของไคลเอ็นต์และเวอร์ชัน ส่วนหัวนี้มีจุดประสงค์เพื่อการเก็บสถิติและติดตามไคลเอ็นต์ที่ละเมิดโปรโตคอลเท่านั้น ตั้งแต่นั้นมา ส่วนหัว User-Agent ก็มีความซับซ้อนมากขึ้นเรื่อยๆ และเริ่มมีข้อมูลเฉพาะตัวของผู้ใช้จำนวนมาก ซึ่งมักจะใช้ในการทำลายนิ้วมือเบราว์เซอร์ทำให้เว็บไซต์สามารถติดตามผู้ใช้ข้ามเว็บไซต์ได้โดยไม่ต้องโหลดJavaScript ใดๆ สำหรับผู้ใช้[ 1 ]
ประวัติศาสตร์
ร่างต้นฉบับของข้อกำหนด Client Hint ได้รับการเสนอโดยวิศวกรของGoogle ในปี 2013 ข้อกำหนดดังกล่าวกลายเป็นร่างของInternet Engineering Task Force (IETF) ในเดือนพฤศจิกายน 2015 ในปี 2021 ข้อกำหนดดังกล่าวได้รับการยกระดับเป็นสถานะคำขอความคิดเห็น เชิงทดลอง (RFC) [ 2 ]การกำหนดนี้บ่งชี้ว่า IETF ได้ยอมรับข้อกำหนด Client Hints เป็นมาตรฐานอินเทอร์เน็ตแล้ว แต่ยังมีคำถามที่ยังไม่ได้รับการแก้ไขหรือยังไม่ได้รับการยอมรับอย่างแพร่หลายในอินเทอร์เน็ต[ 3 ]ในช่วงเวลาเดียวกัน ข้อกำหนดเกี่ยวกับวิธีการที่เว็บเบราว์เซอร์จะจัดการ HTTP Client Hints บนเว็บได้รับการเผยแพร่เป็นร่างในรายงานกลุ่มชุมชนW3C [ 2 ]
ในปี 2020 Google ประกาศความตั้งใจที่จะยกเลิก การประกาศ User-Agent (UA) โดยเบราว์เซอร์[ 4 ]การยกเลิกนี้เป็นส่วนหนึ่งของโครงการริเริ่มที่กว้างขึ้นของ Google ในการเปลี่ยนแปลงเว็บที่อนุญาตให้เว็บไซต์เข้าถึงข้อมูลผู้ใช้โดยไม่กระทบต่อความเป็นส่วนตัวซึ่งเรียกว่าPrivacy Sandboxพวกเขาอ้างถึง Client Hints เป็นทางเลือกที่รักษาความเป็นส่วนตัวแทนส่วนหัว User-Agent เนื่องจากช่วยให้สามารถแบ่งปันข้อมูลเดียวกันได้อย่างมีระบบมากขึ้น[ 5 ]อย่างไรก็ตาม ข้อเสนอ Client Hints ในเบื้องต้นได้รับการต่อต้านจากเบราว์เซอร์ อื่นๆ เนื่องจากความกังวลเกี่ยวกับความเป็นส่วนตัว ในปี 2019 Braveได้แสดงความกังวลเกี่ยวกับข้อเสนอในเบื้องต้น โดยอ้างถึงวิธีการที่อาจนำไปใช้ในการติดตามผู้ใช้บนอินเทอร์เน็ต[ 6 ] Mozillaบริษัทผู้ผลิตFirefoxจัดประเภทข้อเสนอนี้ว่าเป็นอันตรายในเบื้องต้น และAppleบริษัทผู้ผลิตSafariก็มีท่าทีเชิงลบต่อข้อเสนอนี้เช่นกัน[ 7 ]แม้จะมีข้อกังวลเหล่านี้Chromeก็ได้นำการสนับสนุน HTTP Client Hints มาใช้ในเดือนสิงหาคม 2020 แม้ว่าการยกเลิกการใช้งานสตริง UA จะล่าช้าออกไปเนื่องจากการระบาดของ COVID-19แต่กระบวนการนี้ก็เสร็จสมบูรณ์ในเดือนกุมภาพันธ์ 2023 [ 8 ]
นับตั้งแต่การคัดค้านครั้งแรก Mozilla ได้ปรับท่าทีให้เป็นกลาง[ 7 ]และ Brave ได้ปรับการใช้งาน Client Hints ให้สอดคล้องกับ Chrome [ 2 ]ณ ปี 2024 ผู้ใช้เว็บกว่า 75% ใช้เบราว์เซอร์ที่รองรับ Client Hints [ 2 ]
กลไก
โปรโตคอล Client Hints กำหนดเอนทิตีสองอย่าง ได้แก่ตัวแทนผู้ใช้ (UA) (โดยทั่วไปคือเบราว์เซอร์ ) และเซิร์ฟเวอร์เอนทิตีทั้งสองนี้สื่อสารกันเพื่อเจรจาว่าควรให้บริการเนื้อหาประเภทใดแก่ผู้ใช้[ 9 ]กระบวนการนี้เกี่ยวข้องกับการที่เซิร์ฟเวอร์ส่งการตอบกลับไปยัง UA พร้อมกับAccept-CHส่วนหัว HTTPที่มีรายการส่วนหัว HTTP Client Hint ที่เซิร์ฟเวอร์ต้องการ[ 2 ]ต่อมา UA จะต้องส่งคืนคำแนะนำไคลเอ็นต์ที่ร้องขอพร้อมกับการตอบกลับแต่ละครั้ง หาก UA รองรับคำแนะนำเหล่านั้น ส่วนหัวเหล่านี้จะถูกใช้โดยเซิร์ฟเวอร์เพื่อตัดสินใจว่าจะให้บริการเนื้อหาประเภทใดแก่ UA [ 9 ]หาก UA ไม่เข้าใจหรือไม่รองรับคำแนะนำไคลเอ็นต์เฉพาะ UA จะได้รับคำสั่งให้ละเว้นคำแนะนำไคลเอ็นต์นั้น ในกรณีที่คำแนะนำไคลเอ็นต์เฉพาะไม่สามารถแคชได้เซิร์ฟเวอร์จะต้องระบุส่วนหัวคำแนะนำไคลเอ็นต์ที่เกี่ยวข้องในส่วนVaryหัวแยกต่างหากที่ส่งไปยัง UA เพื่อให้แน่ใจว่ากลไกการแคชเข้าใจว่าการตอบกลับอาจแตกต่างกันไปตามค่าคำแนะนำไคลเอ็นต์ที่แตกต่างกัน[ 9 ]สำหรับคำแนะนำของไคลเอ็นต์ที่ระบุเบราว์เซอร์โดยเฉพาะ จะมีการรวมตัวระบุเบราว์เซอร์แบบสุ่ม เพิ่มเติมไว้ เพื่อป้องกันไม่ให้ผู้ใช้โปรโตคอลพึ่งพาพฤติกรรมเฉพาะตัวของเบราว์เซอร์[ 10 ] [ 11 ]
สำหรับ UA ที่อนุญาตให้ใช้ JavaScriptจะมีตัวเลือกเพิ่มเติมผ่านnavigator.userAgentDataJavaScript APIนี้ทำให้ JavaScript สามารถดึงข้อมูลเดียวกันกับที่ได้รับจากส่วนหัว Client Hints ได้[ 11 ] API จะแยกข้อมูลที่ให้ไว้เป็นสองประเภท ได้แก่ ข้อมูล เอนโทรปี ต่ำ และข้อมูลเอนโทรปีสูง ข้อมูลเอนโทรปีต่ำสอดคล้องกับข้อมูลที่มีแนวโน้มที่จะคล้ายคลึงกันในกลุ่มผู้ใช้จำนวนมาก เช่น แพลตฟอร์มที่เบราว์เซอร์ทำงานอยู่และยี่ห้อของเบราว์เซอร์ ในทางตรงกันข้าม ข้อมูลเอนโทรปีสูงอาจแตกต่างกันอย่างมากระหว่างผู้ใช้ รวมถึงรายละเอียดต่างๆ เช่น หมายเลขเวอร์ชันที่แน่นอนของเบราว์เซอร์และรุ่นของอุปกรณ์ของผู้ใช้ ข้อมูลเอนโทรปีต่ำจะรวมอยู่ใน API ในรูปแบบพารามิเตอร์ออบเจ็กต์ ในขณะที่ข้อมูลเอนโทรปีสูงซึ่งสามารถระบุตัวผู้ใช้ได้อย่างเฉพาะเจาะจงจะต้องถูกดึงมาโดยไคลเอ็นต์อย่างชัดเจนโดยการเรียกใช้getHighEntropyValues()ฟังก์ชันใน API ซึ่งอนุญาตให้เบราว์เซอร์ขออนุญาตจากผู้ใช้หรือทำการตรวจสอบเพิ่มเติม[ 12 ]
ตัวอย่าง
ในการเริ่มต้นการเจรจาเนื้อหาเซิร์ฟเวอร์ HTTP จะเพิ่มส่วนAccept-CHหัวลงในคำตอบของคำขอ HTTP:
HTTP / 1.1 200 OK ... ยอมรับ-CH: ความกว้างของวิวพอร์ต ... หากเอเจนต์ผู้ใช้รองรับคำแนะนำด้านความกว้างของวิวพอร์ต เอเจนต์ผู้ใช้จะเพิ่มส่วนViewport-Widthหัวดังกล่าวในทุกคำขอที่ตามมา
GET /gallery HTTP / 1.1 ... ความกว้างของวิวพอร์ต: 1920 ... จากนั้นเซิร์ฟเวอร์สามารถใช้ข้อมูลในViewport-Widthส่วนหัวเพื่อตัดสินใจเกี่ยวกับประเภทของเนื้อหาที่จะให้บริการแก่ไคลเอนต์ ตัวอย่างเช่น หากเซิร์ฟเวอร์มีรูปภาพเฉพาะที่มีขนาดใหญ่มาก เซิร์ฟเวอร์สามารถกำหนดค่าให้ส่งคืนรูปภาพที่มีขนาดเล็กกว่าได้หากรูปภาพนั้นไม่พอดีกับวิวพอร์ต[ 13 ]
ข้อกังวลด้านความเป็นส่วนตัว
เมื่อข้อเสนอ Client Hints ถูกเผยแพร่ครั้งแรก ก็มีข้อกังวลด้านความเป็นส่วนตัวอย่างมาก ผู้ผลิตเบราว์เซอร์อย่างBraveและMozillaชี้ให้เห็นว่าข้อกำหนดเฉพาะในร่างข้อเสนอฉบับแรกอนุญาตให้เว็บไซต์สั่งให้เบราว์เซอร์ส่งข้อมูล Client Hint ไปยังโดเมนของบุคคลที่สาม โดเมนของบุคคลที่สามคือโดเมนที่ไม่ได้เรียกใช้โค้ด JavaScript ใดๆ แต่โหลดทรัพยากร เช่น รูปภาพและไฟล์สคริปต์[ 6 ]ข้อกำหนดในร่างฉบับแรกจะอนุญาตให้โดเมนของบุคคลที่สามเหล่านี้ เช่นเครือข่ายการส่งเนื้อหา (CDN) และผู้ให้บริการคลาวด์ CDN กระจายเนื้อหาเว็บไซต์ผ่านเครือข่ายของกลุ่มเซิร์ฟเวอร์ที่กระจายตัวทางภูมิศาสตร์เพื่อปรับปรุงความเร็วและความน่าเชื่อถือของเว็บไซต์ ผู้ให้บริการคลาวด์เช่นCloudflareและGoogle Cloudให้บริการต่างๆ เช่น การจัดเก็บข้อมูล พลังการประมวลผล และโครงสร้างพื้นฐานสำหรับเว็บไซต์และแอปพลิเคชัน หน่วยงานเหล่านี้สามารถติดตามผู้ใช้บนเว็บได้โดยการสั่งให้เบราว์เซอร์ส่งข้อมูล Client Hint ไปยังเซิร์ฟเวอร์ของตนพร้อมกับเว็บไซต์ต้นฉบับ[ 6 ] [ 14 ]นอกจากนี้ยังมีความกังวลว่าข้อเสนอ Client-Hint นั้นอนุญาตมากเกินไปและอนุญาตให้ข้อมูลส่วนตัวที่ละเมิดความเป็นส่วนตัวใหม่ๆ ที่ไม่สามารถหาได้จากการอ่านส่วนหัว HTTP เพียงอย่างเดียว รั่วไหลไปยังเซิร์ฟเวอร์ได้[ 14 ]ยิ่งไปกว่านั้น ส่วนขยายที่มุ่งรักษาความเป็นส่วนตัวของผู้ใช้ เช่นส่วนขยาย NoScriptก็คัดค้านข้อเสนอนี้ด้วยเหตุผลที่ว่ามันจะทำให้การป้องกันเว็บไซต์จากการดึงข้อมูลส่วนตัวที่ละเมิดความเป็นส่วนตัวของผู้ใช้ออก ไปทำได้ยากขึ้นอย่างมาก [ 6 ]
นับตั้งแต่มีการนำ Client Hints มาใช้โดยเบราว์เซอร์หลักๆ เช่นGoogle ChromeและMicrosoft Edgeนักวิจัยด้านความเป็นส่วนตัวได้แสดงความกังวลเกี่ยวกับการใช้งานจริงเพื่อการติดตาม[ 15 ]การศึกษาในปี 2023 โดยนักวิจัยจากKU Leuvenและมหาวิทยาลัย Radboudพบว่าจากเว็บไซต์ 100,000 อันดับแรก ไฟล์ JavaScript 60% ที่โหลดโดยเว็บเพจเข้าถึง API JavaScript ของ Client Hints โดยส่วนใหญ่เป็นสคริปต์การติดตามและโฆษณาซึ่งหลายไฟล์มาจากGoogleสคริปต์เหล่านี้มากกว่า 90% ส่งข้อมูลที่ได้รับไปยังโดเมนการติดตาม[ 16 ]การศึกษาต่อมาในเดือนพฤษภาคม 2024 โดยนักวิจัยจากมหาวิทยาลัยวิทยาศาสตร์ประยุกต์ Hochschule Bonn-Rhein-Siegตั้งข้อสังเกตว่า แม้ว่าการนำ Client Hints มาใช้โดยรวมในหมู่เว็บไซต์บนอินเทอร์เน็ตจะต่ำ แต่โดเมนของบุคคลที่สามจำนวนมากที่เป็นที่รู้จักในด้านการติดตามได้เข้าถึงข้อมูล HTTP Client Hints [ 17 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- คำแนะนำสำหรับไคลเอ็นต์ User-Agent – รายงานฉบับร่างจากกลุ่มชุมชน วันที่ 9 กุมภาพันธ์ 2021
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ คำแนะนำสำหรับลูกค้า
Client Hints คือส่วนขยายของ โปรโตคอล HTTP ที่อนุญาตให้เซิร์ฟเวอร์ขอข้อมูลเกี่ยวกับการตั้งค่าจากไคลเอ็นต์ (โดยปกติคือ เว็บเบราว์เซอร์ )...
พื้นหลัง
ในปี พ.ศ. 2535 ได้มีการนำส่วนขยายของ โปรโตคอล HTTP มาใช้ โดยเพิ่ม User-Agent ส่วนหัว HTTP ซึ่งส่งจากไคลเอ็นต์ไปยังเซิร์ฟเวอร์ และประกอบด้วยสตริงง่ายๆ ที่ระบุชื่อของไคลเอ็นต์และเวอร์ชัน...
ประวัติศาสตร์
ร่างต้นฉบับของข้อกำหนด Client Hint ได้รับการเสนอโดยวิศวกรของ Google ในปี 2013 ข้อกำหนดดังกล่าวกลายเป็นร่างของ Internet Engineering Task Force (IETF) ในเดือนพฤศจิกายน 2015 ในปี 2021 ข้อกำหนดดังกล่าวได้รับการยกระดับเป็นสถานะ คำขอความคิดเห็น เชิงทดลอง (RFC) [ 2...
กลไก
โปรโตคอล Client Hints กำหนดเอนทิตีสองอย่าง ได้แก่ ตัวแทนผู้ใช้ (UA) (โดยทั่วไปคือ เบราว์เซอร์ ) และ เซิร์ฟเวอร์ เอนทิตีทั้งสองนี้สื่อสารกันเพื่อเจรจาว่าควรให้บริการเนื้อหาประเภทใดแก่ผู้ใช้ [ 9 ] กระบวนการนี้เกี่ยวข้องกับการที่เซิร์ฟเวอร์ส่งการตอบกลับไปยัง UA...