ZipFile, ZipEntry и ZipBuffer в Node.js 26.8.0: безопасный тест архива. Обратимый тест, матрица наблюдений, контрольная ветка, критерии остановки и минимальный пакет для support без рабочих секретов.
Факт и граница вывода
Первичный источник фиксирует ровно одно изменение: релиз 26.8.0 добавляет ZipEntry, ZipFile и ZipBuffer в область zlib. Он не доказывает, что симптом есть у всех, что переход на Current ветку разрешён политикой проекта или что один видимый результат выявляет причину. Отдельная проблема здесь: приложение должно прочитать структуру ZIP, но нельзя считать каждый архив корректным или безопасным по факту открытия. До теста запишите effective runtime, канал поддержки и ожидаемую границу.
Минимальный обратимый стенд
Используйте только изолированный fixture: маленький архив с двумя текстовыми файлами, вложенной директорией и отдельным повреждённым central directory. Не подключайте боевую базу, реальные адреса, ключи, cookies, полные логи или личные файлы. Сначала получите baseline, затем измените один фактор, повторите сценарий и верните исходное состояние. Так A→B→A2 отделит эффект версии от кэша, порядка событий и случайности.
Поля наблюдения и control
На каждом прогоне заполняйте одну строку матрицы: archive × entry path × declared size × extracted bytes × rejection class. Не добавляйте поля «похоже на исправление»: нужны наблюдаемые классы, счётчики, hashes и коды ошибок. Контрольная ветка: известный корректный архив, проверенный независимым системным инструментом без распаковки в рабочий каталог. Если control даёт тот же неожиданный результат, влияние изменения Node.js не доказано. Расхождение A и A2 означает, что стенд загрязнён и вывод нужно отложить.
Дерево решения по результату
Применяйте решение, записанное до прогона: структура совпала — API boundary pass; повреждённый архив принят — тест неверен; путь выходит из target — немедленный reject. Не смешивайте статусы «API документирован», «бинарник имеет нужную версию», «тест прошёл» и «миграция разрешена». Это разные границы. Один проход не превращайте в заключение о производительности, безопасности или совместимости всего проекта.
Красные флаги и stop-line
Жёсткий критерий остановки для этой темы: не распаковывать непроверенный архив поверх приложения и не следовать абсолютным или родительским путям. Также остановитесь, если тест неожиданно обращается в сеть, требует повышенных прав, меняет данные за пределами temp каталога, не возвращает A2 к baseline или зависит без timeout. Неизвестный результат не нужно заменять удобным объяснением или повторять на рабочей среде.
Минимальный пакет для support
Для эскалации достаточно: runtime, список имён и размеров без содержимого, error class и SHA тестового архива. Добавьте точный канал Node.js, время теста, ожидаемый класс и фактический класс, а также прошёл ли A→B→A2. Не прикладывайте env, токены, ключи, полные пути с именем пользователя, содержимое рабочей базы или сырые сетевые данные. Цель пакета — доказать одну нарушенную границу и один следующий безопасный тест.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.
Источники и проверка
- Node.js 26.8 release notes проверено 2026-08-29
- Node.js 26.8 API documentation проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.