إجابة سريعة: التخزين المحلي (LocalStorage) هو آلية تخزين قائمة على المتصفح، والتي، مثل ملفات تعريف الارتباط (cookies)، تقع تحت لوائح خصوصية البيانات بما في ذلك توجيه الخصوصية الإلكترونية (ePrivacy Directive) واللائحة العامة لحماية البيانات (GDPR) في الاتحاد الأوروبي. يعد تخزين أو الوصول إلى بيانات غير أساسية في التخزين المحلي دون موافقة مسبقة ومستنيرة وممنوحة بحرية من المستخدم انتهاكًا للامتثال. تتجاهل معظم المنظمات هذا لأن أدوات إدارة الموافقة الخاصة بها مكوّنة لملفات تعريف الارتباط فقط، مما يترك التخزين المحلي غير مُدار بالكامل.
النقاط الرئيسية
- يُعامل التخزين المحلي قانونيًا على أنه "تقنية مماثلة" لملفات تعريف الارتباط بموجب قانون المملكة المتحدة والاتحاد الأوروبي، مما يعني أن نفس قواعد الموافقة تنطبق.
- أكد المجلس الأوروبي لحماية البيانات (EDPB) أن التقنيات مثل التخزين المحلي تتطلب موافقة مسبقة ومستنيرة وممنوحة بحرية قبل تخزين أو الوصول إلى أي بيانات غير أساسية [2].
- تميز مكتب مفوض المعلومات (ICO) بين التخزين الضروري تمامًا لخدمة ما والتخزين غير الضروري المستخدم للتتبع أو التحليلات، حيث يتطلب الأخير فقط موافقة صريحة [1].
- تنظم العديد من منصات إدارة الموافقة ملفات تعريف الارتباط افتراضيًا ولكنها تترك التخزين المحلي غير مراقب، مما يخلق فجوة امتثال كبيرة [3].
- يحمل SessionStorage نفس الآثار المترتبة على الخصوصية مثل LocalStorage عند استخدامه لأغراض التتبع أو التحليلات.
- سحب الموافقة يلزم الموقع بحذف أي بيانات LocalStorage تم جمعها بموجب تلك الموافقة.
- تتطلب البرامج النصية للجهات الخارجية التي تكتب إلى LocalStorage أيضًا تغطية الموافقة، وتقع المسؤولية على عاتق مشغل الموقع.
- يمكن أن تكون العقوبات المفروضة على عدم الامتثال بموجب GDPR كبيرة؛ ويزداد الخطر عندما تكون الانتهاكات منهجية وغير معلنة.
ما هو التخزين المحلي وكيف يعمل
التخزين المحلي (LocalStorage) هو واجهة برمجة تطبيقات لتخزين الويب (Web Storage API) مدمجة في المتصفحات الحديثة تسمح لمواقع الويب بتخزين أزواج بيانات المفتاح والقيمة مباشرة على جهاز المستخدم، بدون تاريخ انتهاء صلاحية وبحد أقصى نموذجي لكل مصدر يتراوح حوالي 5-10 ميجابايت. على عكس ملفات تعريف الارتباط، لا يتم إرسال بيانات التخزين المحلي تلقائيًا إلى خادم مع طلبات HTTP، بل تستمر حتى يتم مسحها صراحة بواسطة JavaScript الخاص بالموقع أو بواسطة المستخدم.
إليك كيفية عمله عمليًا:
- يستدعي JavaScript الخاص بالموقع
localStorage.setItem('key', 'value')لكتابة البيانات. - تبقى هذه البيانات على الجهاز عبر جلسات المتصفح حتى يتم استدعاء
localStorage.removeItem('key')أوlocalStorage.clear(). - يمكن فقط للبرامج النصية من نفس المصدر (البروتوكول + النطاق + المنفذ) قراءة أو كتابة تلك البيانات.
الاستخدامات الشائعة تشمل: تخزين تفضيلات المستخدم (المظهر، اللغة)، رموز الجلسة، معرفات التحليلات، محتويات سلة التسوق، وتعيينات متغيرات اختبار A/B.
النقطة الحاسمة للامتثال: نظرًا لأن التخزين المحلي يخزن البيانات على جهاز المستخدم، فإنه يثير نفس الإطار القانوني لملفات تعريف الارتباط بموجب توجيه الخصوصية الإلكترونية (ePrivacy Directive) واللائحة العامة لحماية البيانات (GDPR)، بغض النظر عما إذا كانت هذه البيانات قد تم نقلها إلى خادم [4].
هل تحتاج إلى موافقة المستخدم للتخزين المحلي بموجب اللائحة العامة لحماية البيانات (GDPR)
نعم، لأي استخدام غير أساسي للتخزين المحلي، يلزم الحصول على موافقة صريحة من المستخدم قبل تخزين البيانات أو الوصول إليها. أكد المجلس الأوروبي لحماية البيانات (EDPB) أن التقنيات مثل التخزين المحلي تقع تحت نفس متطلبات الموافقة مثل ملفات تعريف الارتباط، مما يستلزم موافقة مسبقة ومستنيرة وممنوحة بحرية [2]. يحدد مكتب مفوض المعلومات (ICO) كذلك أن الموافقة يجب أن يتم تأكيدها من خلال إجراء واضح لا لبس فيه، وليس استنتاجها من سلوك التصفح أو افتراضها من الاستخدام المستمر للموقع [1].
استثناء الضرورة: إذا تم استخدام التخزين المحلي فقط لتقديم وظيفة طلبها المستخدم صراحة، على سبيل المثال، الاحتفاظ بالعناصر في سلة التسوق أثناء جلسة نشطة، فقد يعتبر هذا تخزينًا ضروريًا تمامًا ولا يتطلب موافقة. ومع ذلك، إذا تم استخدام بيانات سلة التسوق نفسها للتحليلات أو إعادة الاستهداف أو تحديد السلوك، فإن استثناء الضرورة لم يعد ينطبق.
خطأ شائع: افتراض أنه نظرًا لأن بيانات التخزين المحلي لا تنتقل مع طلبات HTTP، فإنها خارج نطاق قانون الخصوصية. ينطبق القانون على فعل تخزين أو الوصول إلى المعلومات على جهاز المستخدم، وليس على ما إذا كانت هذه المعلومات يتم نقلها.
الفرق بين التخزين المحلي وملفات تعريف الارتباط: متطلبات الموافقة
يتطلب كل من التخزين المحلي وملفات تعريف الارتباط موافقة عند استخدامهما لأغراض غير أساسية، لكنهما يختلفان في السلوك التقني وكيفية تعامل أدوات الامتثال معهما عادةً.
| الميزة | ملفات تعريف الارتباط | التخزين المحلي |
|---|---|---|
| انتهاء الصلاحية | قابل للتكوين | لا يوجد (حتى يتم مسحه) |
| يتم إرسالها مع طلبات HTTP | نعم | لا |
| الوصول من جانب الخادم | نعم | لا |
| مغطاة بمعظم CMPs افتراضيًا | نعم | غالبًا لا [3] |
| الموافقة مطلوبة (غير أساسية) | نعم | نعم |
| النطاق | لكل نطاق/مسار | لكل مصدر |
الفجوة العملية كبيرة: معظم منصات إدارة الموافقة مصممة حول حظر ملفات تعريف الارتباط وتصنيفها. تحدث عمليات الكتابة في التخزين المحلي من خلال JavaScript التي قد لا تعترضها CMPs ما لم يتم تكوينها خصيصًا للقيام بذلك. لهذا السبب، فإن التخزين المحلي تحت الرادار: لماذا يتطلب أيضًا موافقة صريحة من المستخدم ليس مجرد قلق نظري، بل هو نقطة عمياء نشطة للامتثال لنسبة كبيرة من مواقع الويب [3].
لماذا يتطلب التخزين المحلي موافقة صريحة من المستخدم
يتطلب التخزين المحلي موافقة صريحة لأنه يشكل وصولاً أو تخزينًا للمعلومات على جهاز المستخدم، وهو فعل تنظمه توجيه الخصوصية الإلكترونية (ePrivacy Directive) (وتطبيقاتها الوطنية) بشكل مستقل عما إذا كانت البيانات الشخصية متضمنة. يصنف الخبراء القانونيون التخزين المحلي على أنه "تقنية مماثلة" لملفات تعريف الارتباط بموجب قانون المملكة المتحدة، مما يتطلب موافقة مسبقة ومستنيرة وممنوحة بحرية قبل حدوث أي تخزين غير أساسي [4].
المنطق الأساسي واضح: يحمي القانون جهاز المستخدم كامتداد لمجاله الخاص. سواء تم تخزين البيانات في ملف تعريف ارتباط، أو التخزين المحلي، أو IndexedDB، أو ذاكرة تخزين مؤقت لعامل الخدمة، فإن المحفز القانوني هو فعل التخزين نفسه، وليس التنسيق.
ثلاثة شروط للموافقة الصحيحة (وفقًا لإرشادات ICO) [1]:
- تُمنح بحرية، دون ربط الموافقة بقبول شروط الخدمة.
- محددة ومستنيرة، يجب أن يعرف المستخدم ما يتم تخزينه ولماذا.
- لا لبس فيها، يجب أن تأتي الموافقة من إجراء إيجابي واضح، مثل وضع علامة في مربع اختيار.
هل يعتبر التخزين المحلي تتبعًا بموجب قوانين الخصوصية
يُعتبر التخزين المحلي تتبعًا عندما يُستخدم لتحديد هوية المستخدمين أو إنشاء ملفات تعريف لهم أو مراقبتهم عبر الجلسات أو الصفحات. يُعد تخزين معرف مستخدم تحليلات، أو تعيين اختبار A/B، أو تسمية شريحة سلوكية في التخزين المحلي بمثابة تتبع بموجب معظم التفسيرات التنظيمية، بغض النظر عما إذا كانت تلك البيانات تتم مزامنتها لاحقًا مع خادم.
هذا هو جوهر "التخزين المحلي تحت الرادار: لماذا يتطلب أيضًا موافقة صريحة من المستخدم"، حيث يتعامل العديد من المطورين مع التخزين المحلي كآلية تخزين مؤقت محايدة، بينما يرى المنظمون أي معرف دائم على جانب الجهاز كمتجه تتبع محتمل يتطلب موافقة.
هل يمكنك تخزين البيانات الشخصية في التخزين المحلي
من الناحية الفنية، نعم، لكن القيام بذلك ينطوي على مخاطر قانونية كبيرة وهو غير مستحسن بشكل عام. تخضع البيانات الشخصية المخزنة في التخزين المحلي (مثل عناوين البريد الإلكتروني، ومكونات بصمة الجهاز، أو معرفات المستخدم المرتبطة بالملفات الشخصية) لجميع التزامات اللائحة العامة لحماية البيانات (GDPR): الأساس القانوني، وتقليل البيانات، وحدود الاحتفاظ، والحق في المسح [1].
المخاطر الخاصة بالتخزين المحلي:
- تستمر البيانات إلى أجل غير مسمى ما لم يتم مسحها صراحة، مما يجعل الامتثال للاحتفاظ صعبًا.
- يمكن لأي JavaScript على الصفحة (بما في ذلك البرامج النصية للجهات الخارجية) الوصول إلى بيانات التخزين المحلي من نفس المصدر.
- لا يوجد تشفير مدمج؛ البيانات الحساسة المخزنة بنص عادي يمكن الوصول إليها من قبل أي شخص لديه وصول إلى الجهاز أو عبر ثغرات XSS.
التوصية: تجنب تخزين البيانات الشخصية القابلة للتحديد في التخزين المحلي. إذا كان التخزين ضروريًا، فتأكد من الحصول على الموافقة، وتقليل البيانات، ووجود آلية حذف واضحة.
التخزين المحلي مقابل تخزين الجلسة: الآثار المترتبة على الخصوصية
يتصرف تخزين الجلسة (SessionStorage) بشكل مطابق للتخزين المحلي (LocalStorage) من حيث واجهة برمجة تطبيقات تخزين الويب (Web Storage API)، ولكن يتم مسح البيانات عند إغلاق علامة تبويب المتصفح أو النافذة. على الرغم من هذا العمر الأقصر، يخضع تخزين الجلسة لنفس متطلبات الموافقة عند استخدامه للتتبع أو التحليلات [6].
التمييز الرئيسي لأغراض الامتثال:
- قد يعتبر تخزين الجلسة ضروريًا تمامًا بسهولة أكبر (على سبيل المثال، الحفاظ على الحالة أثناء عملية دفع متعددة الخطوات)، لأن البيانات لا تستمر بعد الجلسة.
- يتطلب التخزين المحلي دائمًا تقريبًا موافقة لحالات استخدام التتبع لأن استمراريته تنشئ معرفًا طويل الأجل على جهاز المستخدم.
لا توجد آلية معفاة بطبيعتها من قانون الخصوصية. يحدد الغرض ومحتوى البيانات المخزنة التزام الموافقة، وليس نوع التخزين نفسه.
ماذا يحدث إذا استخدمت التخزين المحلي بدون موافقة
يُعد استخدام التخزين المحلي لأغراض غير أساسية دون الحصول على موافقة مسبقة صالحة انتهاكًا لتوجيه الخصوصية الإلكترونية (ePrivacy Directive)، وحيثما تكون البيانات الشخصية متضمنة، للائحة العامة لحماية البيانات (GDPR). يمكن أن تشمل العواقب التحقيق التنظيمي، وإجراءات الإنفاذ، وتلف السمعة.
بالإضافة إلى المخاطر التنظيمية، هناك بُعد متزايد للإنفاذ التقني: تستهدف ميزات خصوصية المتصفح وأدوات حظر الإعلانات بشكل متزايد التتبع القائم على التخزين المحلي. قد تجد المواقع التي تعتمد على التخزين المحلي غير الموافق عليه للتحليلات أو التخصيص أن بياناتها غير موثوقة بشكل متزايد مع انتشار هذه الأدوات.
قائمة التحقق من التعرض العملي:
- برامج نصية للتحليلات من جهات خارجية تكتب معرفات التخزين المحلي دون تغطية الموافقة.
- أدوات اختبار A/B تخزن تعيينات المتغيرات قبل جمع الموافقة.
- أدوات الدردشة أو الدعم التي تهيئ التخزين المحلي عند تحميل الصفحة قبل أي تفاعل من المستخدم.
- وحدات بكسل إعادة الاستهداف التي تستخدم التخزين المحلي كبديل لملفات تعريف الارتباط.
كيفية تنفيذ موافقة التخزين المحلي على موقع الويب الخاص بك
يتطلب تنفيذ موافقة التخزين المحلي منصة لإدارة الموافقة يمكنها حظر تنفيذ JavaScript، وليس فقط تعيين ملفات تعريف الارتباط، حتى يتخذ المستخدم خيار موافقة صالحًا. لن تعترض لافتات ملفات تعريف الارتباط القياسية التي تعمل فقط على طبقة HTTP عمليات الكتابة في التخزين المحلي التي تتم بواسطة JavaScript [3].
نهج التنفيذ خطوة بخطوة:
- تدقيق استخدامك للتخزين المحلي. استخدم أدوات مطور المتصفح (علامة تبويب التطبيق) وماسحًا ضوئيًا للبرامج النصية لتحديد كل مفتاح مكتوب في التخزين المحلي، والبرنامج النصي الذي يكتبه، ولأي غرض.
- تصنيف كل استخدام. صنف التخزين على أنه ضروري تمامًا، أو وظيفي، أو تحليلات، أو تسويق. يمكن فقط للتخزين الضروري تمامًا المضي قدمًا دون موافقة.
- اختر CMP يغطي التخزين المحلي. تأكد من أن منصة إدارة الموافقة الخاصة بك يمكنها حظر أو تأجيل تنفيذ JavaScript للبرامج النصية غير الضرورية حتى يتم منح الموافقة. Biscotti CMP مصمم للتعامل مع هذا المستوى من إدارة الموافقة على مستوى البرنامج النصي.
- تنفيذ تحميل البرنامج النصي المقيد بالموافقة. يجب أن يتم تحميل البرامج النصية غير الأساسية التي تكتب إلى التخزين المحلي فقط بعد أن يقبل المستخدم فئة الموافقة ذات الصلة.
- توفير واجهة مستخدم واضحة للموافقة. يجب أن تصف لافتة الموافقة استخدام التخزين المحلي بلغة واضحة، مصنفة حسب الغرض، مع خيارات موافقة دقيقة.
- تنفيذ آلية سحب وحذف. عندما يسحب المستخدم موافقته، يجب مسح مفاتيح التخزين المحلي ذات الصلة على الفور.
كيفية حذف بيانات التخزين المحلي بعد سحب المستخدم للموافقة
عندما يسحب المستخدم موافقته، يجب على الموقع حذف أي بيانات تخزين محلي تم جمعها بموجب تلك الموافقة على الفور. هذا ليس اختياريًا، فالحق في سحب الموافقة وحذف البيانات المرتبطة بها هو مبدأ أساسي من مبادئ اللائحة العامة لحماية البيانات (GDPR).
نمط التنفيذ: