การทำความเข้าใจเกี่ยวกับคุกกี้

คุกกี้เป็นกลุ่มข้อมูลที่จัดเก็บไว้ในเบราว์เซอร์ซึ่งใช้เพื่อคงสถานะและข้อมูลอื่นๆ ที่เว็บไซต์ต้องใช้เพื่อใช้งานฟีเจอร์ต่างๆ ของคุกกี้

คุกกี้เป็นไฟล์ขนาดเล็กที่เว็บไซต์จัดเก็บไว้ในเครื่องของผู้ใช้ ซึ่งเป็นข้อมูลที่คุกกี้จัดเก็บจะเดินทางไปมาระหว่างเบราว์เซอร์และเว็บไซต์

คุกกี้แต่ละรายการคือคู่คีย์-ค่า พร้อมด้วยแอตทริบิวต์จำนวนหนึ่งที่ควบคุมว่าจะใช้คุกกี้ที่ไหนและเมื่อใด แอตทริบิวต์เหล่านี้ใช้สำหรับกำหนดสิ่งต่างๆ เช่น วันที่หมดอายุหรือการระบุว่าคุกกี้ควรส่งผ่าน HTTPS เท่านั้น คุณสามารถตั้งค่าคุกกี้ในส่วนหัว HTTP หรือผ่านอินเทอร์เฟซ JavaScript

คุกกี้เป็นหนึ่งในวิธีที่มีให้สำหรับเพิ่มสถานะถาวรในเว็บไซต์ ในช่วงหลายปีที่ผ่านมา ความสามารถของบริษัทได้พัฒนาและเปลี่ยนแปลงไป แต่ก็ได้ออกจากแพลตฟอร์มไปพร้อมกับปัญหาเดิมที่เป็นปัญหา หากต้องการแก้ไขปัญหานี้ เบราว์เซอร์ (รวมถึง Chrome, Firefox และ Edge) กำลังเปลี่ยนลักษณะการทำงานเพื่อบังคับใช้ค่าเริ่มต้นที่มีการรักษาความเป็นส่วนตัวมากขึ้น

การทำงานของคุกกี้

สมมติว่าคุณมีบล็อกที่ต้องการแสดงข้อความว่า "มีอะไรใหม่" การโปรโมตใน ผู้ใช้ ผู้ใช้ปิดโปรโมชันได้และจะไม่เห็นโปรโมชันนั้นอีกระยะหนึ่ง คุณสามารถจัดเก็บค่ากำหนดนั้นไว้ในคุกกี้ แล้วตั้งค่าให้หมดอายุใน 1 เดือน (2,600,000 วินาที) และส่งผ่าน HTTPS เท่านั้น ส่วนหัวนั้นจะมีลักษณะเช่นนี้ ดังนี้

Set-Cookie: promo_shown=1; Max-Age=2600000; Secure
คุกกี้ 3 รายการกำลังส่งจากเซิร์ฟเวอร์ไปยังเบราว์เซอร์ในการตอบกลับ
เซิร์ฟเวอร์จะกำหนดคุกกี้โดยใช้ส่วนหัว Set-Cookie

เมื่อผู้อ่านดูหน้าที่ตรงกับข้อกำหนดเหล่านั้น แสดงว่าผู้อ่านอยู่ใน การเชื่อมต่อที่ปลอดภัย และคุกกี้มีอายุน้อยกว่าหนึ่งเดือน—เบราว์เซอร์ จะส่งส่วนหัวนี้ในคำขอ:

Cookie: promo_shown=1
กำลังส่งคุกกี้ 3 รายการจากเบราว์เซอร์ไปยังเซิร์ฟเวอร์ในคำขอ
เบราว์เซอร์จะส่งคุกกี้กลับไปในส่วนหัว Cookie

คุณสามารถเพิ่มและอ่านคุกกี้ที่ใช้ได้กับเว็บไซต์นั้นใน JavaScript โดยใช้ document.cookie การกำหนดให้กับ document.cookie จะเป็นการสร้างหรือ ลบล้างคุกกี้ด้วยคีย์นั้น ตัวอย่างเช่น คุณสามารถลองทำสิ่งต่อไปนี้ใน คอนโซล JavaScript ของเบราว์เซอร์:

→ document.cookie = "promo_shown=1; Max-Age=2600000; Secure"
← "promo_shown=1; Max-Age=2600000; Secure"

การอ่าน document.cookie จะแสดงคุกกี้ทั้งหมดที่สามารถเข้าถึงได้ในปัจจุบัน โดยคั่นแต่ละคุกกี้ด้วยเครื่องหมายเซมิโคลอน

→ document.cookie;
← "promo_shown=1; color_theme=peachpuff; sidebar_loc=left"
JavaScript ที่เข้าถึงคุกกี้ภายในเบราว์เซอร์
JavaScript เข้าถึงคุกกี้ได้โดยใช้ document.cookie

ถ้าคุณลองใช้วิธีนี้กับไซต์ยอดนิยมบางแห่ง คุณจะสังเกตเห็นว่าโดยส่วนใหญ่ พวกเขาตั้งค่าคุกกี้มากกว่า 3 รายการอย่างมีนัยสำคัญ ในกรณีส่วนใหญ่ นั้น คุกกี้จะถูกส่งในทุกคำขอที่ส่งไปยังโดเมนนั้น ซึ่งมี ผลกระทบอื่นๆ ที่เกี่ยวข้อง แบนด์วิดท์การอัปโหลดมักถูกจำกัดมากกว่าการดาวน์โหลด ดังนั้นโอเวอร์เฮดสำหรับคำขอขาออกทั้งหมดจึงเป็นการเพิ่มความล่าช้าให้กับเวลาของคุณ ถึงไบต์แรก โปรดระมัดระวังในจำนวนและขนาดของคุกกี้ที่คุณตั้งค่าไว้ สร้าง ใช้แอตทริบิวต์ Max-Age เพื่อให้มั่นใจว่าไม่มีคุกกี้ นานกว่าที่จำเป็น

คุกกี้ของบุคคลที่หนึ่งและบุคคลที่สามคืออะไร

ถ้าคุณกลับไปที่ไซต์ที่เคยดูก่อนหน้านี้ อาจสังเกตเห็นว่ามีคุกกี้อยู่ในหลายโดเมน ไม่ใช่ เฉพาะรายการที่คุณกำลังเยี่ยมชมอยู่ คุกกี้ที่ตรงกับโดเมนของ เว็บไซต์ปัจจุบัน ซึ่งก็คือสิ่งที่แสดงในแถบที่อยู่ของเบราว์เซอร์ จะหมายถึง เป็นคุกกี้ของบุคคลที่หนึ่ง ในทำนองเดียวกัน คุกกี้จากโดเมนอื่นที่ไม่ใช่ เว็บไซต์ปัจจุบันจะเรียกว่าคุกกี้ของบุคคลที่สาม ข้อมูลนี้ไม่สมบูรณ์ แต่สัมพันธ์กับบริบทของผู้ใช้ คุกกี้เดียวกันสามารถเป็น บุคคลที่หนึ่งหรือบุคคลที่สาม โดยขึ้นอยู่กับเว็บไซต์ที่ผู้ใช้อยู่ในขณะนั้น

วันที่ กำลังส่งคุกกี้ 3 รายการไปยังเบราว์เซอร์จากคำขอที่ต่างกันในหน้าเว็บเดียวกัน
คุกกี้อาจมาจากโดเมนต่างๆ ที่หลากหลายในหน้าเดียว

ต่อจากตัวอย่างข้างต้น สมมติว่าบล็อกโพสต์ของคุณมี รูปภาพของแมวตัวหนึ่งที่น่าทึ่ง และโฮสต์อยู่ที่ /blog/img/amazing-cat.png เพราะเป็นภาพที่น่าทึ่งมาก การที่คนคนหนึ่ง ใช้บนเว็บไซต์โดยตรง หากผู้เข้าชมเคยเข้าสู่บล็อกของคุณและมี promo_shown คุกกี้ จากนั้นเมื่อดู amazing-cat.png ในอีก เว็บไซต์ของบุคคลที่ส่งคุกกี้ไปในคำขอรูปภาพนั้น ช่วงเวลานี้ ไม่มีประโยชน์สำหรับใครเลยเนื่องจากไม่ได้ใช้ promo_shown เพื่ออะไรเลย บนไซต์ของบุคคลอื่น เป็นเพียงการเพิ่มค่าใช้จ่ายให้กับคำขอ

หากการดำเนินการดังกล่าวเกิดจากความไม่ตั้งใจ เหตุใดคุณจึงอยากทำแบบนี้ นี่คือ กลไกที่อนุญาตให้เว็บไซต์รักษาสถานะไว้เมื่อมีการใช้งานใน ข้อมูลของบุคคลที่สาม ตัวอย่างเช่น หากคุณฝังวิดีโอ YouTube ในเว็บไซต์ ผู้เข้าชมจะเห็นวิดีโอ "ดูภายหลัง" ในโปรแกรมเล่น หากผู้เข้าชมของคุณคือ ลงชื่อเข้าใช้ YouTube แล้ว และเซสชันนั้นจะพร้อมใช้งานใน โปรแกรมเล่นแบบฝังโดยคุกกี้ของบุคคลที่สาม ซึ่งหมายความว่า "ดูภายหลัง" ปุ่มจะ ก็เพียงบันทึกวิดีโอในครั้งเดียว โดยไม่ต้องการแจ้งให้ลงชื่อเข้าใช้หรือต้อง ให้นำทางออกจากหน้าเว็บแล้วกลับไปที่ YouTube

วันที่ มีการส่งคุกกี้เดียวกันในบริบทที่ต่างกัน 3 บริบท
คุกกี้ในบริบทของบุคคลที่สามจะถูกส่งเมื่อเข้าชมหน้าเว็บต่างๆ

หนึ่งในทรัพย์สินทางวัฒนธรรมของเว็บคือ เว็บไซต์มีแนวโน้มที่จะเปิดโดย "ค่าเริ่มต้น" สิ่งนี้เป็นส่วนหนึ่งของสิ่งที่ทำให้ผู้คนมากมาย สามารถสร้างสรรค์ เนื้อหาและแอปของตนเองไว้ที่นั่น แต่วิธีนี้ก็ทำให้ ด้านความปลอดภัยและความเป็นส่วนตัว การโจมตีการปลอมแปลงคำขอแบบข้ามเว็บไซต์ (CSRF) ต้องอาศัย การที่คุกกี้แนบมากับคำขอใดๆ ที่ส่งไปยังต้นทาง ไม่ว่า ผู้ที่ส่งคำขอ ตัวอย่างเช่น หากคุณไปที่ evil.example เรียกใช้คำขอไปยัง your-blog.example และเบราว์เซอร์ของคุณจะแนบ คุกกี้ที่เชื่อมโยง ถ้าบล็อกของคุณไม่ระมัดระวังเรื่องการตรวจสอบบล็อก คำขอ evil.example จะเรียกใช้การดำเนินการต่างๆ เช่น ลบโพสต์หรือเพิ่ม เนื้อหาของตนเอง

นอกจากนี้ ผู้ใช้ยังตระหนักถึงวิธีการใช้คุกกี้เพื่อติดตาม กิจกรรมในหลายเว็บไซต์ แต่ก่อนหน้านี้ยังไม่มีวิธีที่จะ ระบุความตั้งใจของคุณอย่างชัดเจนกับคุกกี้ คุกกี้ promo_shown ของคุณควร ส่งในบริบทของบุคคลที่หนึ่งเท่านั้น ขณะที่คุกกี้เซสชันสำหรับวิดเจ็ต ในเว็บไซต์อื่น ก็มีไว้เพื่อให้ สถานะการลงชื่อเข้าใช้ในบริบทของบุคคลที่สาม

คุณระบุ Intent ของคุณเองด้วยคุกกี้ได้โดยการตั้งค่าแอตทริบิวต์ SameSite ที่เหมาะสม

ดูสูตรคุกกี้ของบุคคลที่หนึ่งเพื่อระบุคุกกี้ของบุคคลที่หนึ่งและตั้งค่าแอตทริบิวต์ที่เหมาะสม