# Estensione (informatica)

L'estensione di un file, in ambito informatico, è un suffisso, ovvero una breve sequenza di caratteri alfanumerici (tipicamente tre), posto alla fine del nome di un file e separato dalla parte precedente con un punto, attraverso il quale il sistema operativo riesce a distinguerne il tipo di contenuto (testo, musica, immagine, video...) e il formato utilizzato, e di conseguenza riesce ad aprirlo con la corrispondente applicazione.
Le estensioni sono utilizzate in tutti i sistemi operativi Microsoft, da MS-DOS a Windows 11. Vi sono invece sistemi operativi che adottano metodi differenti di identificazione dei tipi di file, per esempio Unix (che impiega con scopi simili sia i diritti d'accesso che il magic number) e i sistemi operativi del Macintosh precedenti a macOS (che usano type code e creator code).

## Storia ed evoluzione
### Limitazioni storiche

Le prime versioni del filesystem FAT utilizzato nel DOS e in Windows avevano una limitazione al numero di caratteri utilizzabili per il nome del file (8) e per l'estensione (3) (il sistema è perciò anche chiamato 8.3). Ad esempio, il seguente nome di file:
    FILENAME.EXT
avrebbe sfruttato tutti gli 11 caratteri disponibili.
In tali sistemi, il comando dir, che permetteva di ottenere la lista dei file presenti in una cartella, dava un output di questo tipo:
La prima colonna contiene i nomi dei file, la seconda le estensioni.

### Il progresso nelle estensioni

Spesso, per scegliere l'estensione da dare a una certa classe di file è stata utilizzata l'abbreviazione del formato del file (ad esempio .GFX, da graphics, per file grafici, .TXT, da text per solo testo e .MUS per alcuni file musicali).
In altri casi, l'estensione è l'abbreviazione o la sigla del programma solitamente utilizzato per aprire tali file. In alcuni casi l'estensione di un file permette anche di capire da quale versione di un tale programma il file è stato creato.
Per esempio, le prime versioni di WordStar utilizzavano l'estensione .WS o .WSn dove n è il numero di versione del programma.
Con il tempo, si sono verificati molti casi in cui una stessa estensione è utilizzata con significati diversi. Un esempio è .rpm, utilizzata da RPM Package Manager e da RealNetworks RealPlayer (per file RealPlayer Media); un altro può essere .qif condivisa da Quicken Quicken Information Files e QuickTime Image Format (immagini).
All'avvento dell'era di Internet, gli utenti Windows erano ancora limitati a estensioni composte al massimo da 3 caratteri, per cui era possibile distinguere chi stava usando sistemi Windows per creare le sue pagine web da chi utilizzava computer Macintosh o Unix (che non usano il sistema delle estensioni e quindi non impongono vincoli specifici sul nome dei file), in quanto gli utenti Windows erano costretti a nominare le loro pagine con l'estensione .htm (invece che .html).
Microsoft risolse questi problemi quando introdusse nei propri sistemi operativi, basati sul file system FAT, l'estensione VFAT, che permetteva di utilizzare nomi di file ed estensioni più lunghi, e composti da lettere maiuscole e minuscole.
Il file system utilizzato nativamente dai sistemi operativi Microsoft successivi a Windows NT 3.1 e Windows 2000: NTFS (nato da una collaborazione tra Microsoft e IBM sul cosiddetto HPFS - High Performance File System, utilizzato in OS/2), non ha limitazioni sulla lunghezza dei nomi e delle estensioni dei file.
Per questi motivi con il passare del tempo le estensioni composte da più di 3 caratteri hanno preso piede, anche se la stragrande maggioranza delle estensioni è ancora di 3 caratteri.

### Le estensioni nelle interfacce grafiche

Con l'avvento degli ambienti desktop dotati di interfaccia grafica, l'estensione è divenuta meno nota a gran parte degli utenti; infatti in diversi di questi ambienti (tipicamente nell'ambito dei sistemi operativi Mac OS e Windows) le estensioni sono per impostazione predefinita nascoste all'utente, che può dedurre il contenuto di un file dalla relativa icona corrispondente (oppure rendendo visibili le estensioni).
In questi ambienti però l'estensione conserva una grande importanza, perché è in base ad essa che il file manager sceglie automaticamente l'icona da attribuire al file e l'applicazione più adatta a gestire quel file.
Per esempio, i sistemi operativi Microsoft che non girano più in ambiente DOS sono provvisti di un elenco che stabilisce una corrispondenza tra le estensioni, le icone e i programmi ad esse associati. Alcune estensioni molto usate sono preimpostate; per le altre il sistema operativo impara in base alle istruzioni date dall'utente o dalle nuove applicazioni installate. Per quel che riguarda le estensioni dei file eseguibili però non è cambiato molto rispetto alla gestione che avveniva su DOS:

## Utilizzo

L'estensione di un file permette di individuare il tipo di file. Nei sistemi operativi che ne fanno un uso considerevole, nonostante un'estensione possa essere cambiata o rimossa manualmente senza perdere il contenuto informativo del file, il file con estensione sbagliata o senza estensione può non essere utilizzabile.
Lo scopo fondamentale, per cui in alcuni sistemi operativi (es. OpenVMS e MS-DOS) furono introdotte le estensioni, era quello di permettere la distinzione tra file contenenti solo dati e file eseguibili. Ad esempio nel DOS, se si digita il nome di un programma indicando solo il nome del file da lanciare (senza specificare l'estensione), il sistema operativo sopperisce cercando tra i file tutti quelli eseguibili con il nome specificato.
Per quel che riguarda i file di dati, l'estensione era inizialmente solo un aiuto all'utente. Il sistema operativo si limitava a visualizzarla, dare la possibilità di cambiarla o utilizzarla per impostare dei software di ricerca.

### Estensioni più utilizzate

Tra le estensioni:
* .txt per file di testo;
* .MP3, .ogg, .WAV, .flac per file di tracce sonore (audio);
* .jpg, .png, .bmp, .gif o .psd, per alcuni formati di immagini digitali statiche;
* .avi, .mpeg, .wmv, .mp4, .3gp, .flv per file di immagini digitali in movimento (video).
* .exe, .com, .bat e .cmd per programmi e script eseguibili in Windows;
* .htm, .html, .shtml, .shtm, .stm, per pagine web statiche;
* .asp, .aspx, .php o .dwt per pagine web dinamiche o script;
* .doc .docx per file generati dal programma di videoscrittura Microsoft Word;
* .odt per file generati dal programma di videoscrittura LibreOffice Writer;
* .ods per file generati dal programma di foglio di calcolo LibreOffice Calc;
* .odp per file generati dal programma di presentazioni LibreOffice Impress;
* .odb per file generati dal programma di database LibreOffice Base;
* .xls e .xlsx per file contenenti fogli di calcolo generati con Microsoft Excel;
* .xml per file scritti in linguaggio eXtensible Markup Language;
* .pdf per documenti di tipo PDF;
* .xps per file scritti in XML Paper Specification;
* .zip o .rar per file compressi;
* .dwg, dxf per programmi di disegno CAD;

## Problemi di sicurezza

A seconda delle impostazioni della shell o del file manager, l'estensione del file può essere o meno visualizzata dall'utente. Per questa ragione alcuni virus o un worm possono essere veicolati utilizzando un nome di file come LETTERA_PER_TE.TXT.vbs, che verrà visualizzato come LETTERA_PER_TE.TXT se la visualizzazione delle estensioni è disabilitata (impostazione predefinita in Windows Explorer). Perciò un programma potenzialmente dannoso scritto in VBScript può sembrare un innocuo file di testo a un utente che ha le estensioni nascoste.
A partire da Windows XP Service Pack 2 e Windows Server 2003, Windows include un database personalizzabile di tipi di file che possono essere considerati dannosi in certe "zone" (inclusi, ma non solo, download dal World Wide Web e allegati e-mail) che le applicazioni possono interrogare e un insieme di API per richiamare i programmi antivirus. Questi meccanismi rimpiazzano i meccanismi poco funzionali che le singole applicazioni possiedono.
Ci sono due approcci principali: l'uso di una black list e l'utilizzo di una tecnica di rilevamento euristica: i malware possono sfuggire al rilevamento semplicemente cambiando forma in una forma semantica equivalente, in modo da diventare abbastanza differenti da sfuggire all'antivirus. Questa tecnica, chiamata polimorfismo, è più efficace con linguaggi di scripting.

## Il MIME come alternativa alle estensioni

Nel contesto di una rete, i file sono considerati come un flusso di bit e non hanno nomi o estensioni.
Nell'insieme dei protocolli di Internet l'informazione a proposito di un certo "tipo" riferita a un determinato flusso di bit sono codificate nel MIME Content-type del flusso, rappresentata da una riga di testo in un blocco precedente lo stream, come:
Alcuni sistemi operativi e ambienti desktop come BeOS, KDE o GNOME hanno incominciato a utilizzare i MIME Content-types per segnare i file con metadata appropriati sul tipo di contenuto del file, non avendo più bisogno dell'estensione del file. Per mappare le estensioni dei file in content-types si sfruttano tecniche euristiche, basate sul contenuto del file ma eventualmente anche sull'estensione.