Projekt techniczny
Metodologia i granice bezpieczeństwa
Implementacja faworyzuje pochodzenie danych, minimalną mutację, wyraźną niepewność i powtarzalną weryfikację zamiast konwersji wyłącznie dla wygody.
1. Identyfikacja wejścia
Parser nie opiera się wyłącznie na nazwie pliku. Sprawdza ZIP, OLE, JSON, XML i podpisy tekstowe, a następnie sprawdza elementy pakietu, jeśli ma to zastosowanie. Normalizacja ścieżki odrzuca ścieżki bezwzględne, ukośniki odwrotne, komponenty przejścia, zduplikowane znormalizowane nazwy, szyfrowanie, nieobsługiwaną kompresję, archiwa wielodyskowe, ZIP64, nadmierną liczbę wpisów, nadmierny rozszerzony rozmiar i podejrzane współczynniki kompresji.
2. Czytanie zbędne
Rozdzielany tekst
Maszyna stanu zorientowana na bajty rejestruje nieprzetworzony zakres wartości każdego pola, przestrzegając ograniczników w cudzysłowie, cudzysłowów ze zmianą znaczenia i końcówek linii osadzonych. Oddzielna maszyna stanu zdekodowanego ciągu analizuje to samo wejście. Ich macierze są porównywane przed zezwoleniem na wyjście zachowujące bajty.
OOXML
Czytnik pakietów rozpoznaje relacje w skoroszycie i arkuszu, udostępnione ciągi znaków, style, systemy dat i inwentarze zawartości. Każdy wybrany arkusz jest analizowany raz przez interfejsy API XML DOM przeglądarki i ponownie przez skaner rozpiętości komórek XML. Wartości, tekst formuły i typy przechowywania są uzgadniane.
3. Dopasowanie genu do symbolu
Rekordy referencyjne są indeksowane według zatwierdzonych symboli, poprzednich symboli, aliasów i stabilnych identyfikatorów. Dopasowanie jest klasyfikowane, a nie spłaszczane w jednym zastąpieniu:
- zatwierdzone dokładne dopasowanie;
- zatwierdzony symbol z różnicą wielkości liter;
- unikalne lub niejednoznaczne dopasowanie poprzedniego symbolu;
- unikalne lub niejednoznaczne dopasowanie aliasu;
- unikalne lub niejednoznaczne dopasowanie daty do odzyskiwania;
- niezrównane wejście.
Do domyślnej rekomendacji kwalifikują się tylko jednoznacznie obsługiwane mapowania. Mapowania aliasów są domyślnie wyłączone, ponieważ aliasy często mają słabszą semantykę niż poprzednie symbole.
4. Klasyfikacja ryzyka Excel
Jeśli to możliwe, reguły ochrony działają na oryginalnym ciągu znaków, a nie na numerze JavaScript. Wykrywają zera wiodące, długie liczby całkowite, wzorce notacji naukowej, formy miesiąca/daty/godziny, przedrostki formuł, problematyczne rozmieszczenie przecinków, białe znaki na granicy, wzorce cudzysłowów, znaki sterujące i limit długości formuł starszego modelu Excel.
5. Ścieżki wyjściowe
| Źródło | Preferowany pisarz | Weryfikacja |
|---|---|---|
| UTF-8 CSV/TSV/TXT | Zastąpienie surowego zakresu bajtów zatwierdzonych pól | Umowa czytnika i niezmienione bajty poza zakresami poprawek |
| XLSX/XLSM | Zamiana komórek XML arkusza kalkulacyjnego w istniejącym pakiecie | Otwórz ponownie dane wyjściowe, potwierdź zmienione komórki, porównaj każdą niezmodyfikowaną, nieskompresowaną część pakietu i porównaj makrobajty |
| JSON/ODS lub tekst, którego nie można zachować w bajtach | Nowy minimalny XLSX wykorzystujący jawny tekst i konserwatywne komórki numeryczne | Odczyt pakietu i manifest zmian; oznaczone jako konwersja, a nie zachowanie źródła |
| Tylko skanuj | Brak danych wyjściowych | Pakiet inspekcji zawierający inwentarz, ustalenia, ostrzeżenia i metadane uzgodnienia |
6. Przypadki zablokowane lub ograniczone
- Zaszyfrowane pliki ZIP/OOXML są blokowane.
- Podpisane skoroszyty OOXML można przeglądać, ale nie można ich modyfikować.
- Komórki z formułami nie są automatycznie zastępowane.
- Starsze pliki OLE XLS wymagają konwersji w zaufanej aplikacji do obsługi arkuszy kalkulacyjnych przed przetworzeniem.
- Nieobsługiwane kodowanie XML i zniekształcone relacje nie zostają zamknięte.
- W tej początkowej wersji statycznej do formatów opartych na macierzy eksportowany jest tylko wybrany arkusz.
- Domyślne odniesienie HGNC jest celowo zwarte; szeroka migracja symboli powinna wykorzystywać kompletny, lokalnie załadowany plik HGNC.
7. Artefakty odtwarzalności
Audyt ZIP obejmuje czytelny maszynowo manifest JSON, zestawy zmian CSV i JSON, ostrzeżenia i podstawowe dane wyjściowe, jeśli takie istnieją. Manifest rejestruje skrót wejściowy, skrót wyjściowy, wersję aplikacji, przepływ pracy, wersję referencyjną, nazwy czytelników, stan uzgodnienia, liczbę zmian, liczbę nierozwiązanych niejednoznaczności i wynik weryfikacji.
