Read this page in English
→ سجل المشروع

دقّقنا في أمان الموقع وأصلحنا ما وجدناه

في 7 تشرين الثاني دقّقنا في الموقع وفي Workers التابعة له وفي مسار البناء. أصلحت ستة طلبات دمج ما وجدناه. لا يحتاج أي قارئ إلى فعل شيء.

الجواب باختصار.

لا حسابات في الموقع ولا كلمات مرور مخزّنة، فنظر التدقيق في ما يبقى: النص الذي يستطيع الزائر إدخاله في صفحة، الحدود المشتركة التي يستطيع زائر واحد استنفادها، وسيط التحليلات، والمسار الذي يبني الموقع وينشره. أصلحت ستة طلبات دمج ما وجده، خمسة في 7 تشرين الثاني وواحد في 8 منه. وهذا المدخل يعدّدها.

نص البحث يُحوَّل إلى نص آمن في كل مكان.

كانت الدالة التي تنسّق عبارات الواجهة تعيد نتيجتها بوصفها HTML موثوقاً، بما فيها أي نص يُمرَّر إليها. والبحث الذي لا يجد نتيجة كان يطبع كلمات الزائر نفسها عبرها. صارت الوسائط النصية تُحوَّل إلى نص آمن قبل التنسيق، ولا يُعدّ موثوقاً إلا عبارة الواجهة نفسها. يبحث اختبار عن <b>x</b> باللغتين ويتحقق من أنها تعود نصاً. وخرجت 16 صفحة مطابقة بايتاً ببايت قبل التغيير وبعده.

إعادة التوجيه تبقى داخل الموقع.

كان عنوان مصاغ ليبدأ بشرطتين مائلتين، أو بشرطة مائلة وأخرى معكوسة، قادراً على تحويل إحدى إعادات التوجيه لدينا إلى رابط نحو موقع آخر. صارت وجهات إعادة التوجيه تختزل هذه الصيغ. وإعادة التوجيه من روابط الصور الممسوحة القديمة لا تذهب إلا إلى عناوين HTTPS على خادم أرشيف المسح، ووسيط الصور لا يقبل إلا أسماء على هيئة أسماء صور المصدر. أسماء الصور الـ946 في البيانات كلها تجتاز الشرط.

عنوان واحد لا يستطيع إنفاق أجوبة الجميع.

تسحب أجوبة الذكاء الاصطناعي من رصيد يومي مشترك بين كل الزوار. لم يكن الحدّ الخاص بكل جهاز يغطي كل مسار ينفق منه: كانت طلبات إلى واجهة البرمجة تستطيع استنزاف الرصيد من عنوان واحد. صار لكل عنوان حصته اليومية، 150 وحدة افتراضياً، أي نحو ثلاثة أضعاف ما يكلّفه حدّ الجهاز الواحد. وبعد تجاوزها يعرض مربع الجواب صيغته المحدودة. أما البحث نفسه فيستمر.

خادم MCP ينتظر ثم يرفض.

كانت دفعة من طلبات الأدوات قادرة على أخذ كل اتصالات قاعدة البيانات فلا يبقى منها شيء لصفحات الموقع. صارت طلبات الأدوات تحجز وحدات قبل أن تعمل: 4 للبحث في كل أنواع النصوص، و1 لأي طلب آخر، و6 في المجموع. الطلب الذي لا يجد مكاناً خلال ثانيتين يتلقى 503 مع Retry-After: 2، فيعيد المساعد المحاولة.

وسيط التحليلات لا يمرّر إلا حركة موقعنا.

يمرّر الموقع تحليلاته عبر عنوانه نفسه. كان الوسيط يمرّر أي مسار وأي رمز مشروع إلى مزوّد التحليلات. صار يمرّر فقط النقاط التي تستخدمها صفحاتنا، ولمشروعنا، ويردّ بـ404 على أي شيء آخر. ويحذف ملفات تعريف الارتباط وترويسات التفويض في الذهاب وSet-Cookie في العودة. ويُمرَّر سكربت وسم Google بالطريقة نفسها، فلم تعد سياسة أمان المحتوى في الصفحة تثق بخادم يقدّم أي حاوية من Tag Manager.

مسار النشر لا ينشر إلا ما دُمج.

تبدأ مسارات النشر عند انتهاء مسار آخر. صارت تشترط أيضاً أن يكون التشغيل السابق دفعاً أو تشغيلاً يدوياً في هذا المستودع، لا طلب دمج من نسخة متفرعة أبداً. والمهمة التي تدمج طلب دمج البيانات الليلي تعيد قراءة الإيداع نفسه الذي ستدمجه وترفض أي ملف خارج data/ وdb/model/.

النماذج تقرأ النص الخارجي في مجلد فارغ.

يطلب البناء الليلي من نماذج لغوية قراءة نصوص قانونية وصور أحكام ممسوحة تأتي من موقع طرف ثالث. صار كل تشغيل من هذا النوع يبدأ في مجلد جديد فارغ وببيئة دنيا. وأدوات الصدفة وكتابة الملفات والويب ممنوعة بإعدادات الأداة نفسها، لا بجملة في نص التعليمات.

المصادر

استخدم المكتبة