برمجياتقراءة دقيقتين

Node.js 26.8.0 يضيف دعم ZIP إلى zlib مع سقف لحجم المحتوى بعد الفك

صدر Node.js 26.8.0 في 26 أغسطس 2026، ومن أبرز ما فيه إضافة ZipEntry وZipFile وZipBuffer إلى وحدة zlib. وفي اليوم نفسه صدر الإصدار 24.20.0 على خط الـ LTS.

وبحسب التوثيق الرسمي، تفتح الدالة zlib.ZipFile.open أرشيفًا، وتتيح entries المرور على محتوياته، وتضيف add وdelete ملفات أو تحذفها، فيما تسمح stream بقراءة ملف واحد من داخل الأرشيف دون فك الأرشيف كله. وهذا عمل كانت تؤديه قبل ذلك حزم خارجية على npm مثل adm-zip وjszip وyauzl.

لكن الجزء الأهم في الإضافة دالتان صغيرتان: zlib.setMaxZipContentSize وzlib.getMaxZipContentSize. وهما موجودتان لمواجهة ما يسمى zip bomb، وهو ملف مضغوط صغير الحجم يتضخم عند فكه إلى أحجام هائلة قد تستنفد ذاكرة الخادم وتوقفه.

والحماية الوحيدة من هذا النوع أن يوجد سقف لحجم المحتوى بعد الفك، يتوقف عنده البرنامج بدل الاستمرار حتى تنفد الذاكرة. وكثير من حزم الـ zip المتداولة لا تضع هذا السقف افتراضيًا.

ويعني ذلك أن أي endpoint يستقبل ملفات zip من المستخدمين صار بإمكانه الاعتماد على حماية موجودة في الـ runtime، بدل أن تكون خطوة يجب أن يتذكر المطور كتابتها بنفسه. كما يقلّص عدد الاعتماديات الخارجية في المشروع، وكل اعتمادية أقل هي نقطة أقل في سلسلة التوريد.

ويتضمن الإصدار نفسه إضافات أخرى، منها دعم close وSymbol.dispose في SQLite، وتلوين الصياغة في الـ REPL. وبعد ساعات صدر الإصدار 26.8.1، وسببه الوحيد أن الأمر node –version كان يعرض رقم نسخة alpha عن طريق الخطأ.

المصادر

  1. توثيق zlib الرسمي
  2. ملاحظات إصدار Node.js 26.8.0
  3. الـ PR الذي أضاف دعم ZIP
  4. إصدار 24.20.0 على خط LTS

من عدد الخميس 14 ربيع الأول - 27 أغسطس

أخبار ذات صلة

برمجيات

مقال على RedMonk: كل بيئات تشغيل JavaScript الكبرى تملكها شركات كبيرة، وأغلبها على محرك V8

المغزى: المطور لا يشتري بيئة التشغيل بل يبني عليها، وقرار تطوير الطبقة التي تحت كل تطبيقاته يتخذه مجلس إدارة شركة، والبديل الوحيد لمحرك Google تملكه شركة نشاطها الأساسي مختلف.

19 جمادى الأولى - 30 أكتوبر

أخبار الخميس 14 ربيع الأول - 27 أغسطس