Технический проект
Методика и ограничения безопасности
Реализация отдает предпочтение происхождению данных, минимальному изменению, явной неопределенности и повторяемой проверке, а не преобразованию только для удобства.
1. Идентификация входа
Анализатор не полагается исключительно на имя файла. Он проверяет ZIP, OLE, JSON, XML и текстовые подписи, а затем проверяет элементы пакета, где это применимо. Нормализация пути отвергает абсолютные пути, обратную косую черту, компоненты обхода, повторяющиеся нормализованные имена, шифрование, неподдерживаемое сжатие, многодисковые архивы, ZIP64, чрезмерное количество записей, чрезмерно расширенный размер и подозрительные степени сжатия.
2. Избыточное чтение
Текст с разделителями
Байт-ориентированный конечный автомат записывает диапазон необработанных значений каждого поля, соблюдая при этом разделители в кавычках, экранированные кавычки и встроенные окончания строк. Отдельный конечный автомат декодированной строки анализирует тот же ввод. Их матрицы сравниваются перед тем, как будет разрешен вывод с сохранением байтов.
OOXML
Средство чтения пакетов разрешает связи между книгами и листами, общие строки, стили, системы дат и реестры контента. Каждый выбранный лист анализируется один раз с помощью API-интерфейсов XML DOM браузера, а затем снова с помощью сканера необработанных ячеек XML. Значения, текст формулы и типы хранения согласовываются.
3. Сопоставление генов и символов
Справочные записи индексируются по утвержденному символу, предыдущим символам, псевдонимам и стабильным идентификаторам. Соответствие классифицируется, а не сводится к одной замене:
- утвержденное точное совпадение;
- утвержденный символ с разницей капитализации;
- уникальное или неоднозначное совпадение предыдущего символа;
- уникальное или неоднозначное совпадение псевдонима;
- уникальное или неоднозначное совпадение восстановления даты;
- непревзойденный ввод.
Только однозначные поддерживаемые сопоставления имеют право на рекомендацию по умолчанию. Сопоставления псевдонимов отключены по умолчанию, поскольку псевдонимы часто имеют более слабую семантику, чем предыдущие символы.
4. Классификация рисков Excel
Правила защиты по возможности работают с исходной строкой, а не с номером JavaScript. Они обнаруживают ведущие нули, длинные целые числа, шаблоны экспоненциальных обозначений, формы месяца/даты/времени, префиксы формул, проблемное размещение запятых, граничные пробелы, шаблоны кавычек, управляющие символы и устаревшее ограничение длины формулы Excel.
5. Пути вывода
| Источник | Предпочитаемый писатель | Проверка |
|---|---|---|
| UTF-8 CSV/TSV/TXT | Необработанная замена диапазона байтов для утвержденных полей | Соглашение с читателем и неизмененные байты за пределами диапазонов исправлений. |
| XLSX/XLSM | Замена ячейки XML рабочего листа внутри существующего пакета | Снова откройте вывод, подтвердите измененные ячейки, сравните каждую немодифицированную несжатую часть пакета и сравните байты макроса. |
| JSON/ODS или текст без сохранения байтов | Новый минимальный XLSX с использованием явного текста и консервативных числовых ячеек. | Повторное чтение пакета и изменение манифеста; помечено как преобразование, а не сохранение источника |
| Только сканирование | Нет вывода данных | Пакет аудита с инвентаризацией, выводами, предупреждениями и метаданными сверки |
6. Заблокированные или ограниченные случаи
- Зашифрованные файлы ZIP/OOXML блокируются.
- Подписанные книги OOXML можно проверять, но не изменять.
- Ячейки формулы не заменяются автоматически.
- Устаревшие файлы OLE XLS перед обработкой требуют преобразования в надежном приложении для работы с электронными таблицами.
- Неподдерживаемые кодировки XML и неверные связи не закрываются.
- В этой первоначальной статической версии только выбранный лист экспортируется в матричные форматы.
- Ссылка HGNC по умолчанию намеренно компактна; Для миграции широких символов следует использовать полный локально загружаемый файл HGNC.
7. Артефакты воспроизводимости
Аудит ZIP включает машиночитаемый манифест JSON, наборы изменений CSV и JSON, предупреждения и основной вывод, если таковой существует. В манифесте записываются входной хэш, выходной хеш, версия приложения, рабочий процесс, эталонная версия, имена читателей, состояние сверки, количество изменений, количество неразрешенных неоднозначностей и результат проверки.
