كيف تتحقق من أن ملفاتك لا تُرفع
كل هذه المواقع تقول إنها تحترم الخصوصية. كيف أتحقق من ذلك فعلاً؟
ابدأ من الافتراض الصحيح
ادّعاء الخصوصية على صفحة تسويقية ليس دليلاً. وكذلك أيقونة القفل أو الشارة أو جملة في سياسة الخصوصية — فهذه كلها تصف النية، والذي تريد معرفته هو السلوك. ولحسن الحظ فالسلوك قابل للملاحظة: كل متصفح يأتي بأدوات تعرض لك بالضبط ما ترسله الصفحة، ولست بحاجة إلى أن تكون مطوّراً لتقرأها.
أجرِ هذه الفحوص على هذا الموقع. وأجرِها على الموقع الذي كنت تستخدمه من قبل. فالغاية ليست الوثوق بادّعاء آخر، بل الكفّ عن الحاجة إلى الوثوق بأي ادّعاء.
الفحص الأول: راقب لوحة الشبكة
- افتح أدوات المطوّر. في معظم متصفحات سطح المكتب يكون ذلك بمفتاح F12، أو Ctrl+Shift+I، أو Cmd+Option+I.
- اختر تبويب الشبكة وتأكد من أن التسجيل مفعّل.
- أعد تحميل الصفحة، ثم امسح القائمة كي تبدأ من سجل فارغ.
- اختر ملفك وشغّل العملية.
- رتّب حسب الحجم، أو انظر إلى عمود الأسلوب بحثاً عن طلبات POST و PUT.
ما تبحث عنه هو أي طلب تقارب حمولته حجم ملفك، وأي طلب على الإطلاق إلى مضيف غير الموقع الذي أنت فيه. فالأداة المحلية ستُظهر طلبات لشيفرتها هي — نصوص برمجية وأوراق أنماط ووحدات WebAssembly وربما ملف نموذج — ثم لا شيء أثناء تنفيذ العمل. أما أداة الرفع فستُظهر طلباً يحمل عدة ميغابايتات في اللحظة التي تضغط فيها الزر.
الفحص الثاني: اقطع الشبكة
هذا أقوى الفحوص، وهو لا يتطلب أي خبرة إطلاقاً. حمّل الصفحة كالمعتاد، واستخدم الأداة مرة واحدة كي يُخزَّن مؤقتاً أي محرّك تحتاجه، ثم اقطع الاتصال: فعّل وضع الطيران، أو أطفئ Wi-Fi، أو استخدم مفتاح العمل دون اتصال في أدوات المطوّر. ثم عالج ملفاً.
فإن اكتملت العملية، فلا يمكن أن تكون المعالجة قد جرت في مكان غير جهازك. ولا مجال هنا لأي التباس يُتجادل فيه. وإن فشلت أو تعلّقت، فذلك يعني أن شيئاً في مسار المعالجة احتاج إلى خادم — وقد يكون ذلك مشروعاً، كملف نموذج لم يُخزَّن مؤقتاً بعد، لكنك صرت تعرف الآن أن عليك السؤال عن ماهيته.
الفحص الثالث: اقرأ سياسة أمان المحتوى
سياسة أمان المحتوى ترويسة يرسلها الموقع ويفرضها المتصفح. وتوجيه connect-src فيها يعدّد الوجهات التي يُسمح للصفحة بفتح اتصال إليها. فإذا كان connect-src مقصوراً على مصدر الموقع نفسه، فإن المتصفح ذاته سيحجب أي محاولة لإرسال شيء إلى مكان آخر، مهما حاولت شيفرة الصفحة أن تفعل.
ولقراءتها، افتح تبويب الشبكة، وانقر طلب المستند — وهو عادةً الصف الأول — وانظر في ترويسات الاستجابة عن Content-Security-Policy. فالسياسة التي تتضمن connect-src 'self' دون مضيفات خارجية قيدٌ حقيقي يفرضه المتصفح، لا وعد.
ما الذي يثبته كل فحص
| الفحص | ما يثبته | ما لا يغطّيه |
|---|---|---|
| لوحة الشبكة | ما أرسلته هذه الصفحة خلال هذه الجلسة | مسار شيفرة مختلف، أو إصدار لاحق من الموقع، أو طلب أُرسل بعد أن كففت عن المراقبة |
| اختبار قطع الاتصال | أن المعالجة نفسها تجري محلياً | ما إذا كان شيء يُوضع في طابور ويُرسل بمجرد عودة الاتصال |
| سياسة أمان المحتوى | أين يسمح المتصفح بالاتصالات أصلاً | أي شيء تجيزه السياسة، بما في ذلك مصدر الموقع نفسه |
| قراءة الشيفرة المصدرية | ما تحتويه الشيفرة المشحونة | الجهد؛ كما يجب تكرارها كلما تغيّر الموقع |
هذه الفحوص مجتمعةً قوية. ولكل منها منفرداً ثغرة، ومن يقول لك إن فحصاً واحداً يحسم المسألة فهو يبسّط الأمور أكثر مما ينبغي.
إشارات تدل على أن الأداة ليست محلية
- شريط تقدّم يتحرك بسرعة لا علاقة لها بجهازك — سلس ومتطابق على حاسوب محمول سريع وعلى هاتف قديم.
- نتيجة تُسلَّم كرابط تنزيل على نطاقهم، بدل ملف يحتفظ به متصفحك أصلاً.
- رسالة عن حذف الملفات من خوادمهم بعد عدد من الساعات. تلك الجملة اعتراف بأن الملفات كانت هناك.
- طابور انتظار أو حدّ لمعدل الاستخدام. فمعالجك أنت ليس فيه طابور مشترك مع أشخاص آخرين.
- أن تعمل الأداة مع قطع الاتصال في الملف الصغير الأول فقط، ثم تتوقف.
حدود التحقق
التحقق يخبرك عن إصدار الموقع الذي اختبرته، في اليوم الذي اختبرته فيه. والموقع قد يتغير غداً. ولهذا فإن أهم الفحوص هي الفحوص البنيوية: سياسة أمان محتوى مقيِّدة واختبار ناجح دون اتصال هما خاصيتان في طريقة بناء التطبيق، لا وعدان بشأن إصدار بعينه.
ويبقى أمران خارج كل فحص في هذه القائمة. فإضافة المتصفح تستطيع قراءة محتوى أي صفحة، بما في ذلك الملف الذي حمّلته فيها، ولا يستطيع أي موقع منع ذلك. ونظام تشغيلك يستطيع أن يرى كل ملف تفتحه. فإذا كان مستند ما حساساً إلى الحد الذي يجعل ذلك مهماً، فعالجه في برنامج يعمل دون اتصال على جهاز تتحكم فيه، واعتبر أي موقع ويب — بما فيه هذا الموقع — الأداة الخاطئة لتلك المهمة.
أدوات لهذا الغرض
المصادر
- W3C — Content Security Policy Level 3
- MDN — Content-Security-Policy connect-src
- Chrome DevTools — inspect network activity
- MDN — Firefox Network Monitor