คำตอบสั้น: LocalStorage เป็นกลไกการจัดเก็บข้อมูลที่อยู่ในเบราว์เซอร์ ซึ่งเหมือนกับคุกกี้ อยู่ภายใต้กฎระเบียบด้านความเป็นส่วนตัวของข้อมูล รวมถึงคำสั่ง ePrivacy ของสหภาพยุโรปและ GDPR การจัดเก็บหรือเข้าถึงข้อมูลที่ไม่จำเป็นใน LocalStorage โดยไม่มีความยินยอมจากผู้ใช้ที่ชัดเจน, ได้รับข้อมูล, และให้โดยเสรี เป็นการละเมิดการปฏิบัติตามกฎระเบียบ องค์กรส่วนใหญ่ไม่สนใจเรื่องนี้เพราะเครื่องมือการจัดการความยินยอมของพวกเขาถูกตั้งค่าไว้เฉพาะสำหรับคุกกี้ ทำให้ LocalStorage ไม่ได้รับการจัดการเลย
ข้อคิดสำคัญ
- LocalStorage ถูกมองว่าเป็น "เทคโนโลยีที่คล้ายกัน" กับคุกกี้ตามกฎหมายของสหราชอาณาจักรและสหภาพยุโรป ซึ่งหมายความว่ากฎความยินยอมเดียวกันใช้บังคับ
- คณะกรรมการคุ้มครองข้อมูลยุโรป (EDPB) ได้ยืนยันว่าเทคโนโลยีเช่น LocalStorage ต้องการความยินยอมที่ชัดเจน, ได้รับข้อมูล, และให้โดยเสรี ก่อนที่จะมีการจัดเก็บหรือเข้าถึงข้อมูลที่ไม่จำเป็น [2]
- ICO แยกแยะระหว่างการจัดเก็บที่จำเป็นอย่างเคร่งครัดสำหรับบริการและการจัดเก็บที่ไม่จำเป็นซึ่งใช้สำหรับการติดตามหรือการวิเคราะห์ โดยเฉพาะอย่างยิ่งการจัดเก็บที่ไม่จำเป็นต้องการความยินยอมที่ชัดเจน [1]
- แพลตฟอร์มการจัดการความยินยอมหลายแห่งควบคุมคุกกี้โดยค่าเริ่มต้น แต่ปล่อยให้ LocalStorage ไม่ได้รับการตรวจสอบ ทำให้เกิดช่องว่างการปฏิบัติตามที่สำคัญ [3]
- SessionStorage มีผลกระทบด้านความเป็นส่วนตัวเดียวกันกับ LocalStorage เมื่อใช้สำหรับการติดตามหรือการวิเคราะห์
- การถอนความยินยอมทำให้เว็บไซต์ต้องลบข้อมูล LocalStorage ที่เก็บรวบรวมภายใต้ความยินยอมดังกล่าว
- สคริปต์ของบุคคลที่สามที่เขียนลงใน LocalStorage ก็ต้องการความครอบคลุมของความยินยอม ความรับผิดชอบอยู่ที่ผู้ดำเนินการเว็บไซต์
- โทษสำหรับการไม่ปฏิบัติตามภายใต้ GDPR อาจมีมากมาย ความเสี่ยงจะเพิ่มขึ้นเมื่อการละเมิดเป็นระบบและไม่ได้เปิดเผย
LocalStorage คืออะไรและทำงานอย่างไร
LocalStorage เป็น Web Storage API ที่สร้างขึ้นในเบราว์เซอร์สมัยใหม่ที่อนุญาตให้เว็บไซต์จัดเก็บคู่ข้อมูลคีย์-ค่าโดยตรงบนอุปกรณ์ของผู้ใช้ โดยไม่มีวันหมดอายุและมีขีดจำกัดต่อแหล่งที่มาประมาณ 5-10 MB แตกต่างจากคุกกี้ ข้อมูลใน LocalStorage จะไม่ถูกส่งไปยังเซิร์ฟเวอร์โดยอัตโนมัติพร้อมกับคำขอ HTTP มันจะคงอยู่จนกว่าจะถูกลบโดย JavaScript ของเว็บไซต์หรือโดยผู้ใช้
นี่คือวิธีการทำงานในทางปฏิบัติ:
- JavaScript ของเว็บไซต์เรียกใช้
localStorage.setItem('key', 'value')เพื่อเขียนข้อมูล - ข้อมูลนั้นจะอยู่บนอุปกรณ์ตลอดเซสชันของเบราว์เซอร์จนกว่า
localStorage.removeItem('key')หรือlocalStorage.clear()จะถูกเรียกใช้ - เฉพาะสคริปต์จากแหล่งที่มาที่เดียวกัน (โปรโตคอล + โดเมน + พอร์ต) เท่านั้นที่สามารถอ่านหรือเขียนข้อมูลนั้นได้
การใช้งานทั่วไป ได้แก่: การจัดเก็บความชอบของผู้ใช้ (ธีม, ภาษา), โทเค็นเซสชัน, รหัสประจำตัวการวิเคราะห์, เนื้อหาของรถเข็นซื้อของ และการกำหนดตัวแปร A/B test
จุดสำคัญในการปฏิบัติตาม: เนื่องจาก LocalStorage จัดเก็บข้อมูลบนอุปกรณ์ของผู้ใช้ มันจึงกระตุ้นกรอบกฎหมายเดียวกันกับคุกกี้ภายใต้คำสั่ง ePrivacy และ GDPR โดยไม่คำนึงว่าข้อมูลนั้นจะถูกส่งไปยังเซิร์ฟเวอร์หรือไม่ [4]
คุณต้องการความยินยอมจากผู้ใช้สำหรับ LocalStorage ภายใต้ GDPR หรือไม่
ใช่ สำหรับการใช้งาน LocalStorage ที่ไม่จำเป็นใด ๆ ความยินยอมจากผู้ใช้ที่ชัดเจนจะต้องได้รับก่อนที่จะมีการจัดเก็บหรือเข้าถึงข้อมูล EDPB ได้ยืนยันว่าเทคโนโลยีเช่น LocalStorage อยู่ภายใต้ข้อกำหนดความยินยอมเดียวกันกับคุกกี้ ซึ่งจำเป็นต้องมีความยินยอมที่ชัดเจน, ได้รับข้อมูล, และให้โดยเสรี [2] ICO ยังระบุเพิ่มเติมว่าความยินยอมต้องได้รับการยืนยันผ่านการกระทำที่ชัดเจนและไม่คลุมเครือ ไม่ใช่จากพฤติกรรมการท่องเว็บหรือจากการใช้เว็บไซต์ต่อไป [1]
ข้อยกเว้นความจำเป็น: หาก LocalStorage ถูกใช้เพียงเพื่อให้ฟังก์ชันที่ผู้ใช้ร้องขออย่างชัดเจน เช่น การเก็บรักษาสินค้าในรถเข็นซื้อของระหว่างเซสชันที่ใช้งานอยู่ สิ่งนี้อาจถือว่าเป็นการจัดเก็บที่จำเป็นอย่างเคร่งครัดและไม่ต้องการความยินยอม อย่างไรก็ตาม หากข้อมูลรถเข็นเดียวกันนั้นถูกใช้สำหรับการวิเคราะห์ การกำหนดเป้าหมายใหม่ หรือการสร้างโปรไฟล์พฤติกรรม ข้อยกเว้นความจำเป็นจะไม่สามารถใช้ได้อีกต่อไป
ข้อผิดพลาดทั่วไป: การสมมติว่าเนื่องจากข้อมูลใน LocalStorage ไม่เดินทางไปพร้อมกับคำขอ HTTP จึงอยู่นอกขอบเขตของกฎหมายความเป็นส่วนตัว กฎหมายใช้กับการกระทำในการจัดเก็บหรือเข้าถึงข้อมูลบนอุปกรณ์ของผู้ใช้ ไม่ใช่ว่าข้อมูลนั้นจะถูกส่งไปหรือไม่
ความแตกต่างระหว่าง LocalStorage และคุกกี้: ข้อกำหนดด้านความยินยอม
ทั้ง LocalStorage และคุกกี้ต้องการความยินยอมเมื่อใช้เพื่อวัตถุประสงค์ที่ไม่จำเป็น แต่มีความแตกต่างในพฤติกรรมทางเทคนิคและวิธีที่เครื่องมือการปฏิบัติตามมักจัดการกับพวกเขา
| ฟีเจอร์ | คุกกี้ | LocalStorage |
|---|---|---|
| วันหมดอายุ | กำหนดค่าได้ | ไม่มี (จนกว่าจะถูกลบ) |
| ส่งพร้อมกับคำขอ HTTP | ใช่ | ไม่ |
| การเข้าถึงฝั่งเซิร์ฟเวอร์ | ใช่ | ไม่ |
| ครอบคลุมโดย CMP ส่วนใหญ่โดยค่าเริ่มต้น | ใช่ | มักจะไม่ [3] |
| ความยินยอมที่ต้องการ (ไม่จำเป็น) | ใช่ | ใช่ |
| ขอบเขต | ต่อโดเมน/เส้นทาง | ต่อแหล่งที่มา |
ช่องว่างในการปฏิบัติตามมีความสำคัญ: แพลตฟอร์มการจัดการความยินยอมส่วนใหญ่ถูกออกแบบมาเพื่อบล็อกคุกกี้และการจัดหมวดหมู่คุกกี้ การเขียน LocalStorage เกิดขึ้นผ่าน JavaScript ที่ CMP อาจไม่สามารถดักจับได้ เว้นแต่จะถูกตั้งค่าให้ทำเช่นนั้น นี่คือเหตุผลที่ LocalStorage ที่ถูกมองข้าม: ทำไมจึงต้องการความยินยอมจากผู้ใช้ที่ชัดเจน ไม่ใช่เพียงแค่ข้อกังวลทางทฤษฎี แต่เป็นจุดบอดในการปฏิบัติตามที่มีอยู่จริงสำหรับเว็บไซต์จำนวนมาก [3]
ทำไม LocalStorage จึงต้องการความยินยอมจากผู้ใช้ที่ชัดเจน
LocalStorage ต้องการความยินยอมที่ชัดเจนเพราะมันถือเป็นการเข้าถึงหรือจัดเก็บข้อมูลบนอุปกรณ์ของผู้ใช้ ซึ่งเป็นการกระทำที่อยู่ภายใต้การควบคุมของคำสั่ง ePrivacy (และการดำเนินการในระดับชาติ) โดยไม่คำนึงว่าข้อมูลส่วนบุคคลจะเกี่ยวข้องหรือไม่ ผู้เชี่ยวชาญด้านกฎหมายจัดประเภท LocalStorage เป็น "เทคโนโลยีที่คล้ายกัน" กับคุกกี้ตามกฎหมายของสหราชอาณาจักร ซึ่งต้องการความยินยอมที่ชัดเจน, ได้รับข้อมูล, และให้โดยเสรี ก่อนที่จะมีการจัดเก็บที่ไม่จำเป็นใด ๆ [4]
ตรรกะพื้นฐานนั้นตรงไปตรงมา: กฎหมายปกป้องอุปกรณ์ของผู้ใช้ในฐานะส่วนขยายของพื้นที่ส่วนตัวของพวกเขา ไม่ว่าข้อมูลจะถูกจัดเก็บในคุกกี้, LocalStorage, IndexedDB, หรือแคชของ service worker การกระทำที่กระตุ้นทางกฎหมายคือการจัดเก็บข้อมูลเอง ไม่ใช่รูปแบบ
สามเงื่อนไขสำหรับความยินยอมที่ถูกต้อง (ตามแนวทางของ ICO) [1]:
- ให้โดยเสรี ไม่มีการรวมความยินยอมกับการยอมรับข้อกำหนดในการให้บริการ
- เจาะจงและได้รับข้อมูล ผู้ใช้ต้องรู้ว่ากำลังจัดเก็บอะไรและทำไม
- ชัดเจน ความยินยอมต้องมาจากการกระทำที่ชัดเจนและยืนยัน เช่น การติ๊กที่ช่องทำเครื่องหมาย
LocalStorage ถือเป็นการติดตามภายใต้กฎหมายความเป็นส่วนตัวหรือไม่
LocalStorage ถือเป็นการติดตามเมื่อใช้เพื่อระบุ, สร้างโปรไฟล์, หรือเฝ้าติดตามผู้ใช้ข้ามเซสชันหรือหน้า การจัดเก็บรหัสประจำตัวผู้ใช้การวิเคราะห์, การกำหนด A/B test, หรือป้ายชื่อกลุ่มพฤติกรรมใน LocalStorage ถือเป็นการติดตามภายใต้การตีความของกฎระเบียบส่วนใหญ่ โดยไม่คำนึงว่าข้อมูลนั้นจะถูกซิงค์ไปยังเซิร์ฟเวอร์ในภายหลังหรือไม่
นี่คือแกนหลักของ LocalStorage ที่ถูกมองข้าม: ทำไมจึงต้องการความยินยอมจากผู้ใช้ที่ชัดเจน นักพัฒนาหลายคนมองว่า LocalStorage เป็นกลไกการแคชที่เป็นกลาง ในขณะที่ผู้ควบคุมมองว่ารหัสประจำตัวที่คงอยู่ในอุปกรณ์เป็นตัวชี้วัดการติดตามที่อาจต้องการความยินยอม
คุณสามารถจัดเก็บข้อมูลส่วนบุคคลใน LocalStorage ได้หรือไม่
ในทางเทคนิค ใช่ แต่การทำเช่นนั้นมีความเสี่ยงทางกฎหมายที่สำคัญและโดยทั่วไปไม่แนะนำ ข้อมูลส่วนบุคคลที่จัดเก็บใน LocalStorage (เช่น ที่อยู่อีเมล, ส่วนประกอบลายนิ้วมือของอุปกรณ์, หรือรหัสผู้ใช้ที่เชื่อมโยงกับโปรไฟล์) จะต้องปฏิบัติตามข้อกำหนดทั้งหมดของ GDPR: ฐานทางกฎหมาย, การลดข้อมูล, ข้อจำกัดการเก็บรักษา, และสิทธิในการลบ [1]
ความเสี่ยงเฉพาะของ LocalStorage:
- ข้อมูลจะคงอยู่ตลอดไป เว้นแต่จะถูกลบอย่างชัดเจน ทำให้การปฏิบัติตามข้อกำหนดการเก็บรักษายาก
- JavaScript ใด ๆ บนหน้า (รวมถึงสคริปต์ของบุคคลที่สาม) สามารถเข้าถึงข้อมูล LocalStorage จากแหล่งที่มาเดียวกันได้
- ไม่มีการเข้ารหัสในตัว ข้อมูลที่ละเอียดอ่อนที่จัดเก็บในรูปแบบข้อความธรรมดาสามารถเข้าถึงได้โดยใครก็ตามที่มีการเข้าถึงอุปกรณ์หรือผ่านช่องโหว่ XSS
คำแนะนำ: หลีกเลี่ยงการจัดเก็บข้อมูลส่วนบุคคลที่สามารถระบุได้ใน LocalStorage หากการจัดเก็บเป็นสิ่งจำเป็น ให้แน่ใจว่ามีการขอความยินยอม, ข้อมูลถูกลดขนาด, และมีกลไกการลบที่ชัดเจน
LocalStorage กับ SessionStorage: ผลกระทบด้านความเป็นส่วนตัว
SessionStorage ทำงานเหมือนกับ LocalStorage ในแง่ของ Web Storage API แต่ข้อมูลจะถูกลบเมื่อแท็บหรือหน้าต่างของเบราว์เซอร์ถูกปิด แม้ว่าจะมีอายุการใช้งานที่สั้นกว่า แต่ SessionStorage ก็อยู่ภายใต้ข้อกำหนดความยินยอมเดียวกันเมื่อใช้สำหรับการติดตามหรือการวิเคราะห์ [6]
ความแตกต่างที่สำคัญสำหรับวัตถุประสงค์ในการปฏิบัติตาม:
- SessionStorage อาจถือว่าจำเป็นอย่างเคร่งครัดได้ง่ายกว่า (เช่น การรักษาสถานะระหว่างการชำระเงินหลายขั้นตอน) เพราะข้อมูลจะไม่คงอยู่เกินเซสชัน
- LocalStorage เกือบจะต้องการความยินยอมสำหรับกรณีการใช้งานการติดตาม เพราะความคงอยู่ของมันสร้างตัวระบุระยะยาวบนอุปกรณ์ของผู้ใช้
กลไกทั้งสองไม่มีข้อยกเว้นจากกฎหมายความเป็นส่วนตัวโดยธรรมชาติ วัตถุประสงค์และเนื้อหาของข้อมูลที่จัดเก็บกำหนดข้อกำหนดความยินยอม ไม่ใช่ประเภทการจัดเก็บเอง
จะเกิดอะไรขึ้นหากคุณใช้ LocalStorage โดยไม่มีความยินยอม
การใช้ LocalStorage สำหรับวัตถุประสงค์ที่ไม่จำเป็นโดยไม่ได้รับความยินยอมที่ถูกต้องก่อนเป็นการละเมิดคำสั่ง ePrivacy และเมื่อเกี่ยวข้องกับข้อมูลส่วนบุคคล ก็เป็นการละเมิด GDPR ผลที่ตามมาอาจรวมถึงการสอบสวนจากหน่วยงานกำกับดูแล, การดำเนินการบังคับใช้, และความเสียหายต่อชื่อเสียง
นอกเหนือจากความเสี่ยงด้านกฎระเบียบแล้ว ยังมีมิติด้านการบังคับใช้ทางเทคนิคที่เพิ่มขึ้น: ฟีเจอร์ความเป็นส่วนตัวของเบราว์เซอร์และโปรแกรมบล็อกโฆษณามักมุ่งเป้าไปที่การติดตามที่ใช้ LocalStorage เว็บไซต์ที่พึ่งพา LocalStorage ที่ไม่ได้รับความยินยอมสำหรับการวิเคราะห์หรือการปรับแต่งอาจพบว่าข้อมูลของพวกเขาไม่น่าเชื่อถือมากขึ้นเมื่อเครื่องมือเหล่านี้มีความแพร่หลายมากขึ้น
รายการตรวจสอบการเปิดเผยทางปฏิบัติ:
- สคริปต์การวิเคราะห์ของบุคคลที่สามที่เขียนรหัสประจำตัว LocalStorage โดยไม่มีความครอบคลุมของความยินยอม
- เครื่องมือการทดสอบ A/B ที่จัดเก็บการกำหนดตัวแปรก่อนที่จะมีการเก็บความยินยอม
- วิดเจ็ตแชทหรือเครื่องมือสนับสนุนที่เริ่มต้น LocalStorage เมื่อโหลดหน้าเว็บก่อนการโต้ตอบของผู้ใช้
- พิกเซลการกำหนดเป้าหมายใหม่ที่ใช้ LocalStorage เป็นการสำรองการซิงค์คุกกี้
วิธีการดำเนินการความยินยอม LocalStorage บนเว็บไซต์ของคุณ
การดำเนินการความยินยอม LocalStorage ต้องการแพลตฟอร์มการจัดการความยินยอมที่สามารถบล็อกการดำเนินการ JavaScript ไม่เพียงแต่การตั้งค่าคุกกี้ จนกว่าผู้ใช้จะได้ทำการเลือกความยินยอมที่ถูกต้อง แบนเนอร์คุกกี้มาตรฐานที่ทำงานเฉพาะที่ชั้น HTTP จะไม่สามารถดักจับการเขียน LocalStorage ที่ทำโดย JavaScript [3]
แนวทางการดำเนินการทีละขั้นตอน:
- ตรวจสอบการใช้งาน LocalStorage ของคุณ ใช้เครื่องมือพัฒนาเบราว์เซอร์ (แท็บ Application) และเครื่องสแกนสคริปต์เพื่อตรวจสอบทุกคีย์ที่เขียนลงใน LocalStorage ว่าสคริปต์ใดเขียนมันและเพื่อวัตถุประสงค์ใด
- จัดประเภทการใช้งานแต่ละประเภท จัดเก็บเป็นการจัดเก็บที่จำเป็นอย่างเคร่งครัด, ฟังก์ชัน, การวิเคราะห์, หรือการตลาด การจัดเก็บที่จำเป็นอย่างเคร่งครัดเท่านั้นที่สามารถดำเนินการได้โดยไม่ต้องมีความยินยอม
- เลือก CMP ที่ครอบคลุม LocalStorage ตรวจสอบให้แน่ใจว่าแพลตฟอร์มการจัดการความยินยอมของคุณสามารถบล็อกหรือเลื่อนการดำเนินการ JavaScript สำหรับสคริปต์ที่ไม่จำเป็นจนกว่าจะได้รับความยินยอม Biscotti CMP ถูกออกแบบมาเพื่อจัดการกับระดับการจัดการความยินยอมในระดับสคริปต์นี้
- ดำเนินการโหลดสคริปต์ที่มีความยินยอม สคริปต์ที่ไม่จำเป็นซึ่งเขียนลงใน LocalStorage ควรโหลดเฉพาะหลังจากที่ผู้ใช้ได้ยอมรับหมวดหมู่ความยินยอมที่เกี่ยวข้อง
- ให้ UI ความยินยอมที่ชัดเจน แบนเนอร์ความยินยอมต้องอธิบายการใช้งาน LocalStorage ในภาษาที่เข้าใจง่าย จัดประเภทตามวัตถุประสงค์ พร้อมตัวเลือกการยินยอมที่ละเอียด
- ดำเนินการกลไกการถอนและการลบ เมื่อผู้ใช้ถอนความยินยอม คีย์ LocalStorage ที่เกี่ยวข้องต้องถูกลบทันที