Desain teknis
Metodologi dan batasan keamanan
Penerapannya lebih mengutamakan asal data, mutasi minimal, ketidakpastian eksplisit, dan verifikasi berulang dibandingkan konversi yang mudah dilakukan.
1. Masukan identifikasi
Parser tidak hanya bergantung pada nama file. Ia memeriksa ZIP, OLE, JSON, XML, dan tanda tangan teks, kemudian memeriksa anggota paket jika berlaku. Normalisasi jalur menolak jalur absolut, garis miring terbalik, komponen traversal, duplikat nama yang dinormalisasi, enkripsi, kompresi yang tidak didukung, arsip multi-disk, ZIP64, jumlah entri yang berlebihan, ukuran perluasan yang berlebihan, dan rasio kompresi yang mencurigakan.
2. Membaca secara berlebihan
Teks yang dibatasi
Mesin status berorientasi byte mencatat rentang nilai mentah setiap bidang dengan tetap memperhatikan pembatas yang dikutip, tanda kutip yang lolos, dan akhir baris yang disematkan. Mesin status string yang didekodekan secara terpisah mem-parsing input yang sama. Matriksnya dibandingkan sebelum keluaran yang mempertahankan byte diperbolehkan.
OOXML
Pembaca paket menyelesaikan hubungan buku kerja dan lembar kerja, string bersama, gaya, sistem tanggal, dan inventaris konten. Setiap lembar kerja yang dipilih diurai satu kali melalui API XML DOM browser dan sekali lagi melalui pemindai rentang sel XML mentah. Nilai, teks rumus, dan jenis penyimpanan direkonsiliasi.
3. Pencocokan gen-simbol
Catatan referensi diindeks berdasarkan simbol yang disetujui, simbol sebelumnya, alias, dan pengidentifikasi stabil. Pencocokan diklasifikasikan dan bukan diratakan menjadi satu pengganti:
- pencocokan tepat yang disetujui;
- simbol yang disetujui dengan perbedaan kapitalisasi;
- kecocokan simbol sebelumnya yang unik atau ambigu;
- kecocokan alias unik atau ambigu;
- kecocokan tanggal pemulihan yang unik atau ambigu;
- masukan yang tidak tertandingi.
Hanya pemetaan yang didukung dan tidak ambigu yang memenuhi syarat untuk mendapatkan rekomendasi default. Pemetaan alias dinonaktifkan secara default karena alias sering kali memiliki semantik yang lebih lemah dibandingkan simbol sebelumnya.
4. Klasifikasi risiko Excel
Aturan perlindungan beroperasi pada string asli dan bukan pada nomor JavaScript bila memungkinkan. Mereka mendeteksi angka nol di depan, bilangan bulat panjang, pola notasi ilmiah, bentuk bulan/tanggal/waktu, awalan rumus, penempatan koma yang bermasalah, spasi batas, pola kutipan, karakter kontrol, dan batas panjang rumus Excel yang lama.
5. Jalur keluaran
| Sumber | Penulis pilihan | Verifikasi |
|---|---|---|
| UTF-8 CSV/TSV/TXT | Penggantian rentang byte mentah untuk bidang yang disetujui | Perjanjian pembaca dan byte yang tidak berubah di luar rentang patch |
| XLSX/XLSM | Penggantian sel XML lembar kerja di dalam paket yang ada | Buka kembali keluaran, konfirmasi sel yang diubah, bandingkan setiap bagian paket terkompresi yang tidak dimodifikasi, dan bandingkan byte makro |
| JSON/ODS atau teks yang tidak dapat dipertahankan byte-nya | XLSX minimal baru menggunakan teks eksplisit dan sel numerik konservatif | Paket baca kembali dan ubah manifes; diberi label sebagai konversi daripada pelestarian sumber |
| Pindai saja | Tidak ada keluaran data | Paket audit dengan metadata inventaris, temuan, peringatan, dan rekonsiliasi |
6. Kasus yang diblokir atau dibatasi
- File ZIP/OOXML terenkripsi diblokir.
- Buku kerja OOXML yang ditandatangani dapat diperiksa tetapi tidak diubah.
- Sel rumus tidak diganti secara otomatis.
- File OLE XLS lama memerlukan konversi dalam aplikasi spreadsheet tepercaya sebelum diproses.
- Pengkodean XML yang tidak didukung dan hubungan yang salah format gagal ditutup.
- Hanya lembar kerja yang dipilih yang diekspor untuk format berbasis matriks dalam rilis statis awal ini.
- Referensi default HGNC sengaja dibuat ringkas; migrasi simbol luas harus menggunakan file HGNC lengkap yang dimuat secara lokal.
7. Artefak yang dapat direproduksi
Audit ZIP mencakup manifes JSON yang dapat dibaca mesin, set perubahan CSV dan JSON, peringatan, dan output utama jika ada. Manifes mencatat hash masukan, hash keluaran, versi aplikasi, alur kerja, versi referensi, nama pembaca, status rekonsiliasi, jumlah perubahan, jumlah ambiguitas yang belum terselesaikan, dan hasil verifikasi.
