Che cos'è il formato di file XPI?
Il file con estensione .xpi contiene un archivio dati per l'installazione di software Mozilla aggiuntivo. Il pacchetto di installazione è un archivio ZIP compresso con il metodo deflate - condivide gli stessi magic bytes PK (50 4B 03 04) di un file ZIP standard. Il nome dell'estensione .xpi è l'abbreviazione di Cross-Platform Install - XPInstall, che era il nome della tecnologia utilizzata nel processo di installazione originale.
I pacchetti .xpi vengono utilizzati per installare ed estendere le funzionalità di applicazioni quali:
- Firefox,
- SeaMonkey,
- Thunderbird.
I file di pacchetto .xpi possono contenere plugin, estensioni, temi o dizionari. Il file memorizza anche i metadati di installazione. Nel formato legacy XPInstall, ciò significava un file di script install.js e un file manifest install.rdf; i moderni pacchetti WebExtension (introdotti con Firefox 57 nel 2017) utilizzano manifest.json insieme a JavaScript, HTML, CSS e icone. Il formato è strettamente correlato agli archivi JAR - entrambi sono contenitori ZIP con un layout interno specifico.
I file .xpi firmati distribuiti tramite addons.mozilla.org contengono una directory META-INF/ che ospita una firma crittografica Mozilla. Le installazioni standard di Firefox accettano solo file .xpi firmati digitalmente da Mozilla. Per installare pacchetti di terze parti non certificati da Mozilla, gli utenti devono utilizzare una Developer Edition di Firefox e impostare l'opzione xpinstall.signatures.required su false nella pagina about:config. Il pacchetto può essere installato trascinando il file .xpi sulla finestra del browser. Il contenuto di un pacchetto .xpi può essere consultato cambiando l'estensione del file in .zip e decomprimendolo con qualsiasi strumento di archiviazione.
Sicurezza e incolumità
RISCHIO: MEDIUMUn XPI installa codice che viene eseguito all'interno del browser con i permessi richiesti - un'estensione malevola può leggere le pagine, catturare dati dai moduli o dirottare la navigazione. È esattamente per questo che Mozilla impone la firma: la versione stabile di Firefox installa solo componenti aggiuntivi che Mozilla ha revisionato/firmato, il che blocca la maggior parte dei malware comuni. Il rischio aumenta quando si bypassa la firma (edizioni Developer/Nightly, about:debugging) o si installa un .xpi dall'esterno di AMO - fallo solo per componenti di cui ti fidi e leggi i permessi richiesti all'installazione. Poiché si tratta di uno ZIP, puoi ispezionare manifest.json (e la sua lista di «permissions») con 7-Zip prima di installare. I file .xpi inaspettati nei Download possono essere eliminati tranquillamente; sono programmi di installazione usa e getta.
Dettagli del formato
in sintesiProgrammi che aprono file XPI
Dettagli tecnici
specifiche approfondite| Tipo MIME | application/x-xpinstall |
| Formato contenitore | Archivio ZIP; magic bytes 50 4B 03 04 («PK») all'offset 0, identico a un'intestazione di file locale ZIP standard |
| Manifest interno moderno | manifest.json conforme alle API WebExtension, introdotto con Firefox 57 (Quantum) nel 2017 |
| Manifest interno legacy | install.rdf (metadati RDF) e install.js (script di installazione), utilizzati dal sistema XPInstall precedente a WebExtension |
| Firma crittografica | Directory META-INF/ contenente i file di firma emessi da Mozilla; richiesta per tutti i pacchetti distribuiti tramite addons.mozilla.org |
| Requisito di firma | Il canale release di Firefox rifiuta i file .xpi non firmati; per consentire installazioni non firmate, utilizzare Developer Edition e impostare xpinstall.signatures.required=false in about:config |
| Tipi di contenuto supportati | Estensioni del browser, temi, dizionari, pacchetti lingua e plugin di ricerca |
| Compressione | deflate (compressione ZIP standard); le singole voci possono anche essere memorizzate non compresse all'interno dell'archivio |
| Compatibilità cross-browser | L'API WebExtension è condivisa con le estensioni .crx di Chrome ed Edge; un'estensione con manifest.json è ampiamente portabile tra i browser |
| Formato correlato | .crx (estensione Chromium/Chrome) utilizza un layout simile basato su ZIP ma antepone un'intestazione CRX proprietaria prima dei dati ZIP |
| Metodo di ispezione | Rinomina in .zip e apri con qualsiasi gestore di archivi (7-Zip, WinRAR, ecc.) per sfogliare i file interni senza strumenti speciali |
| Applicazioni host | Mozilla Firefox (primaria), Mozilla Thunderbird (componenti aggiuntivi posta), SeaMonkey |
| Canale di distribuzione | addons.mozilla.org (AMO) - gestisce l'hosting, la revisione e la firma del codice di tutti i pacchetti distribuiti pubblicamente |
| Strumento di build e packaging | web-ext CLI - l'utilità ufficiale a riga di comando di Mozilla per la creazione, il linting, l'esecuzione e la firma dei file .xpi |
| Supporto piattaforma | Multipiattaforma: Windows, macOS, Linux; anche Android tramite Firefox for Android (Fenix) |
| Rilasciato | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| Standard aperto | Sì · royalty-free |
| Specifica | extensionworkshop.com |