# TYPO3

TYPO3 è un sistema di gestione dei contenuti (CMS) aziendale che si distingue per l'uso molto avanzato del codice, che dà sicurezza a un livello quasi inviolabile, e per la logica strutturale, che consente la gestione complessa di centinaia di pagine nonché una chiara divisione dei vari ruoli di amministrazione con vari requisiti di competenza. Per un utilizzatore, ad esempio, non è richiesta alcuna conoscenza di html, css o di qualsiasi altro linguaggio informatico e la gestione comporta una difficoltà anche minore rispetto a quella che si riscontra nel redigere un documento in Word o Writer.
È completamente scritto in PHP e può essere eseguito su diversi server web (come Apache o IIS), oltre a molti sistemi operativi e prevede la maggior parte dei database relazionali come MySQL, Oracle, PostgreSQL. TYPO3 è accreditato per essere altamente flessibile, in quanto il codice e il contenuto sono gestiti separatamente, inoltre ha un gestore di lingue avanzato già incorporato. Il nucleo di TYPO3 è composto da decine di moduli (chiamati “estensioni di sistema”), che sono strutturati secondo un protocollo ben definito. Per personalizzare l'installazione vengono aggiunti ulteriori estensioni che seguono lo stesso protocollo. Questi contengono plugin per le più svariate funzioni. In un repository vengono offerte estensioni pubbliche (per esempio: notizie, blog, speaking url, commercio elettronico, forum ecc.) che possono essere installate ed adoperate con pochi click.
Il sistema è stato creato dal danese Kasper Skårhøj, che ha pubblicato la prima versione nel 1997. TYPO3 è stato rilasciato sotto licenza GPL, open source che viene sviluppato e migliorato continuamente.

## Caratteristiche

TYPO3 viene distribuito in formato compresso. Per poterlo installare è necessario decomprimerlo nella root-directory del proprio server web. Per completare l'installazione esiste uno strumento di installazione (Install-tool) che configura il sito in 5 passi.
Le principali caratteristiche di TYPO3 sono:
* Alto grado di personalizzazione grazie a numerose estensioni, tutte disponibili con licenza libera;
* Caching delle pagine per incrementare le prestazioni;
* Rich Text Editor (CKeditor): un editor di testo che permette di formattare testi, link (interni ed esterni), liste e tabelle;
* Traduzione delle funzionalità del software in 33 lingue;
* Funzionalità multilingue che permette di realizzare siti in diverse lingue;
* File-manager che permette di gestire file multimediali;
* Potente Clipboard che permette di spostare contenuti di pagina, registri, pagine intere (inclusi i contenuti) da una pagina all'altra o di rilocarle nell'albero delle pagine; è possibile riempire la clipboard copiando o muovendo gli oggetti raccogliendoli anche da più pagine per scaricarli nella pagina di destinazione;
* Opzione "Undo": è sempre possibile tornare alla versione precedente di un documento.

## Estensioni

Le estensioni di TYPO3, che si trovano nella TYPO3 Extension Repository (TER), permettono di ampliare il sistema. Così è possibile integrare un grande numero di applicazioni sul proprio sito senza necessità di programmarle.
Le estensioni più usate sono:
* News (tx_news): pubblica notizie in diverse categorie e offre una archiviazione (automatica);
* Template Auto Parser (automaketemplate): crea automaticamente un Template' da un file HTML;
* CKeditor: editor di testo, parte del nucleo di TYPO3;
* Frontend User Registration (sr_feuser_register): permette all'utente di registrarsi per accedere a parti protette del sito;
* RealURL: URLs like normal websites (realurl): indirizzi come quelli per pagine web statiche;
* Shop System (tt_products): sistema di commercio elettronico con tante funzioni;
* CHC Forum (chc_forum): gruppi di discussione.
* SEO: decine di estensioni assicurano una migliore visibilità del sito nei motori di ricerca.
Inoltre è possibile programmare delle proprie estensioni per TYPO3. Le descrizioni per come fare si trovano su http://docs.typo3.org/.

## Template

Per realizzare una pagina web con TYPO3 si usano diversi elementi:
* Template-Fluid: una semplice struttura in HTML che contiene cosiddetti ViewHelper che poi vengono utilizzati da TYPO3 con diversi contenuti.
* Template-TypoScript: con il linguaggio di configurazione di TYPO3 si definisce contenuti e altri variabili. Inoltre si configurano altri elementi.
* Costanti di TYPO3
* Estensioni
È anche possibile usare soltanto TypoScript per fare un sito. Come alternativa a tutto questo è pensabile usare per esempio l'estensione Templa Voilá per creare un Template.

## Storia
### 1997

Kasper Skårhøj Archiviato il 3 luglio 2006 in Internet Archive. comincia a sviluppare TYPO3.

### 1998 – Estate 1999

Il progetto TYPO3 viene portato avanti insieme all'agenzia web Superfish.com.

### Agosto 1999 – agosto 2000

Dopo la rottura con Superfish.com (Kasper ottiene tutti i diritti su TYPO3) segue un anno di lavoro durante il quale Kasper finisce ciò che ha cominciato e pubblica una versione beta di TYPO3. Una settimana dopo si sposa.

### Estate 2000 – 2002

La comunità di TYPO3 cresce e il sistema si evolve continuamente.

### 24 maggio 2002

Il primo "vero" release: TYPO3 versione 3.0. Durante la serie di versioni 3.x vengono sviluppate diverse funzioni nuove, per esempio l'Extension Manager.
| Ramo | Ramo | Versione | Versione | Data di rilascio | Data di rilascio | Principali cambiamenti | Principali cambiamenti |
| 3.x | 3.x | 03.00.00 | 03.00.00 | 2001 | 2001 | Prima versione pubblica | Prima versione pubblica |
| 3.x | 3.x | 03.02.00 | 03.02.00 | 01/05/02 | 01/05/02 | Diverse correzioni di bug | Diverse correzioni di bug |
| 3.x | 3.x | 03.03.00 | 03.03.00 | 03/06/02 | 03/06/02 | Diverse correzioni di bug Prima versione ospitata su Sourceforge | Diverse correzioni di bug Prima versione ospitata su Sourceforge |
| 3.x | 3.x | 03.05.00 | 03.05.00 | 18/02/03 | 18/02/03 | Diverse correzioni di bug Presentazione di Extension Manager: gli utenti possono ora scrivere i propri moduli di estensione | Diverse correzioni di bug Presentazione di Extension Manager: gli utenti possono ora scrivere i propri moduli di estensione |
| 3.x | 3.x | 03.06.00 | 03.06.00 | 30/04/04 | 30/04/04 | Crea codice XHTML in elementi di contenuto standard Archiviazione XML per elementi di contenuto Introduzione del concetto di astrazione del database di base | Crea codice XHTML in elementi di contenuto standard Archiviazione XML per elementi di contenuto Introduzione del concetto di astrazione del database di base |
| 3.x | 3.x | 03.07.00 | 03.07.00 | 24/09/04 | 24/09/04 | Localizzazione dei contenuti semplificata Sistema di autorizzazione esteso TypoScript-Engine rinnovato | Localizzazione dei contenuti semplificata Sistema di autorizzazione esteso TypoScript-Engine rinnovato |
| 3.x | 3.x | 03.08.00 | 03.08.00 | 23/05/05 | 23/05/05 | Capacità multilingue per il backend (introduzione di language pack) Supporto di GraphicsMagick Ricerca frontend migliorata | Capacità multilingue per il backend (introduzione di language pack) Supporto di GraphicsMagick Ricerca frontend migliorata |
| 3.x | 3.x | 03.08.01 | 03.08.01 | 14/11/05 | 14/11/05 | Diverse correzioni di bug e miglioramenti della sicurezza | Diverse correzioni di bug e miglioramenti della sicurezza |
| 4.x | 4.x | 04.00.00 | 04.00.00 | 07/04/06 | 07/04/06 | Riprogettazione del backend per una migliore esperienza utente Output HTML ristrutturato Presentazione delle skin di backend e del nuovo editor di testo RTF Introduzione agli spazi di lavoro (controllo delle versioni integrato) Implementazione di un livello di astrazione del database Consentire a TYPO3 di funzionare su Oracle e PostgreSQL Versione corrente: 4.0.13 | Riprogettazione del backend per una migliore esperienza utente Output HTML ristrutturato Presentazione delle skin di backend e del nuovo editor di testo RTF Introduzione agli spazi di lavoro (controllo delle versioni integrato) Implementazione di un livello di astrazione del database Consentire a TYPO3 di funzionare su Oracle e PostgreSQL Versione corrente: 4.0.13 |
| 4.x | 4.x | 04.01.00 | 04.01.00 | 06/03/07 | 06/03/07 | Albero delle pagine migliorato con Ajax Introduzione all'Inline Relational Record Editing (IRRE) Supporto UTF-8 migliorato e abilitazione delle funzionalità InnoDB Versione attuale: 4.1.15 | Albero delle pagine migliorato con Ajax Introduzione all'Inline Relational Record Editing (IRRE) Supporto UTF-8 migliorato e abilitazione delle funzionalità InnoDB Versione attuale: 4.1.15 |
| 4.x | 4.x | 04.02.00 | 04.02.00 | 24/05/08 | 24/05/08 | Molti miglioramenti della GUI nel backend, comprese le funzionalità AJAX, le funzionalità estese dell'editor di testo Miglioramento dell'accesso al frontend e del processo di aggiornamento delle estensioni Versione attuale: 4.2.17 | Molti miglioramenti della GUI nel backend, comprese le funzionalità AJAX, le funzionalità estese dell'editor di testo Miglioramento dell'accesso al frontend e del processo di aggiornamento delle estensioni Versione attuale: 4.2.17 |
| 4.x | 4.x | 04.03.00 | 04.03.00 | 30/11/09 | 30/11/09 | Modifica del frontend Caricatore Flash e cestino per il backend Nuovi rapporti di sistema e pianificazione del sistema Presentazione del nuovo framework di memorizzazione nella cache Miglioramenti della sicurezza con Salt (crittografia) e RSA Integrazione delle funzionalità Extbase e Fluid Versione attuale: 4.3.14 | Modifica del frontend Caricatore Flash e cestino per il backend Nuovi rapporti di sistema e pianificazione del sistema Presentazione del nuovo framework di memorizzazione nella cache Miglioramenti della sicurezza con Salt (crittografia) e RSA Integrazione delle funzionalità Extbase e Fluid Versione attuale: 4.3.14 |
| 4.x | 4.x | 04.04.00 | 04.04.00 | 22/06/10 | 22/06/10 | Riprogettazione completa del backend incl. miglioramenti delle prestazioni Installazione semplificata, primo pacchetto introduttivo: un modello di sito web completo Compressione CSS e JavaScript , supporto HTML5 nel frontend Versione attuale: 4.4.15 | Riprogettazione completa del backend incl. miglioramenti delle prestazioni Installazione semplificata, primo pacchetto introduttivo: un modello di sito web completo Compressione CSS e JavaScript , supporto HTML5 nel frontend Versione attuale: 4.4.15 |
| 4.x | 4.x | 4,5 LTS | 4,5 LTS | 26/01/11 | 26/01/11 | Prima versione con supporto a lungo termine (LTS), fino a marzo 2015, incl. supporto di IE6 Supporto a lungo termine esteso (a pagamento), fino a marzo 2016 UTF-8 come set di caratteri predefinito e HTML5 nel backend Moduli di backend e gestore estensioni ricondizionati Protezione integrata contro CSRF Versione attuale: 4.5.40 | Prima versione con supporto a lungo termine (LTS), fino a marzo 2015, incl. supporto di IE6 Supporto a lungo termine esteso (a pagamento), fino a marzo 2016 UTF-8 come set di caratteri predefinito e HTML5 nel backend Moduli di backend e gestore estensioni ricondizionati Protezione integrata contro CSRF Versione attuale: 4.5.40 |
| 4.x | 4.x | 04.06.00 | 04.06.00 | 25/10/11 | 25/10/11 | Internazionalizzazione con XLIFF Nuovo elemento di contenuto del modulo del sito web Miglioramenti della sicurezza e delle prestazioni Versione attuale: 4.6.15 | Internazionalizzazione con XLIFF Nuovo elemento di contenuto del modulo del sito web Miglioramenti della sicurezza e delle prestazioni Versione attuale: 4.6.15 |
| 4.x | 4.x | 04.07.00 | 04.07.00 | 24/04/12 | 24/04/12 | Completa accessibilità per nuove installazioni sec. alle WCAG Introduzione di nuovi elementi HTML5 come <audio> e <video>, miglioramenti per TCEforms Presentazione del pacchetto governo Versione attuale: 4.7.19 | Completa accessibilità per nuove installazioni sec. alle WCAG Introduzione di nuovi elementi HTML5 come <audio> e <video>, miglioramenti per TCEforms Presentazione del pacchetto governo Versione attuale: 4.7.19 |
| 6.x | 6.x | 06.00.00 | 06.00.00 | 27 novembre 2012 | 27 novembre 2012 | Integrazione di un file abstraction layer (FAL) Drag & Drop nel modulo Pagina Supporto per IPv6 Bootstrap standardizzato per i punti di montaggio Ultima versione: 6.0.14 | Integrazione di un file abstraction layer (FAL) Drag & Drop nel modulo Pagina Supporto per IPv6 Bootstrap standardizzato per i punti di montaggio Ultima versione: 6.0.14 |
| 6.x | 6.x | 06.01.00 | 06.01.00 | 30/04/13 | 30/04/13 | Aggiornamenti automatici per il Core e per le traduzioni, ea Ultima versione: 6.1.11 | Aggiornamenti automatici per il Core e per le traduzioni, ea Ultima versione: 6.1.11 |
| 6.x | 6.x | 6.2 LTS | 6.2 LTS | 25 marzo 2014 | 25 marzo 2014 | Seconda versione con supporto a lungo termine (LTS), fino ad aprile 2017 File Abstraction Layer (FAL) rielaborato Strumento di installazione riscritto e aggiunta Gestione distribuzione Rendering reattivo delle immagini e anteprima del dispositivo mobile Nuovo modulo di documentazione aggiunto Funzionalità di sicurezza avanzate Ultima versione: 6.2.47 | Seconda versione con supporto a lungo termine (LTS), fino ad aprile 2017 File Abstraction Layer (FAL) rielaborato Strumento di installazione riscritto e aggiunta Gestione distribuzione Rendering reattivo delle immagini e anteprima del dispositivo mobile Nuovo modulo di documentazione aggiunto Funzionalità di sicurezza avanzate Ultima versione: 6.2.47 |
| 7.x | 7.x | 07.00.00 | 07.00.00 | 02/12/14 | 02/12/14 | pulizia generale del codice, miglioramenti della velocità tramite l'outsourcing di un vecchio livello di compatibilità, aggiornamento dell'aspetto visivo del backend. | pulizia generale del codice, miglioramenti della velocità tramite l'outsourcing di un vecchio livello di compatibilità, aggiornamento dell'aspetto visivo del backend. |
| 7.x | 7.x | 07.04.00 | 07.04.00 | 04/08/15 | 04/08/15 | Revisione backend Vol 2 | Revisione backend Vol 2 |
| 7.x | 7.x | 07.05.00 | 07.05.00 | 29/09/15 | 29/09/15 | miglioramenti generali della base di codice, Backend Overhaul Vol 3 | miglioramenti generali della base di codice, Backend Overhaul Vol 3 |
| 7.x | 7.x | 7.6 LTS | 7.6 LTS | 10/11/15 | 10/11/15 | Terza versione con supporto a lungo termine (LTS), supporto fino a novembre 2018 | Terza versione con supporto a lungo termine (LTS), supporto fino a novembre 2018 |
| 8.x | 8.x | 08.00.00 | 08.00.00 | 22/03/16 | 22/03/16 | pulizia generale del codice, miglioramenti della velocità tramite l'outsourcing del vecchio livello di compatibilità, aggiornamento dell'aspetto visivo del backend. Utilizzo di miglioramenti delle prestazioni tramite il requisito PHP7. | pulizia generale del codice, miglioramenti della velocità tramite l'outsourcing del vecchio livello di compatibilità, aggiornamento dell'aspetto visivo del backend. Utilizzo di miglioramenti delle prestazioni tramite il requisito PHP7. |
| 8.x | 8.x | 08.01.00 | 08.01.00 | 03/05/16 | 03/05/16 | Degna di nota: integrazione con Doctrine, rielaborazione UX del modulo dell'area di lavoro, pulizia generale. | Degna di nota: integrazione con Doctrine, rielaborazione UX del modulo dell'area di lavoro, pulizia generale. |
| 8.x | 8.x | 08.02.00 | 08.02.00 | 05/07/16 | 05/07/16 | Supporto per Ogg, flac e opus Rimosso il supporto per l'estensione per la compatibilità6 . | Supporto per Ogg, flac e opus Rimosso il supporto per l'estensione per la compatibilità6 . |
| 8.x | 8.x | 08.03.00 | 08.03.00 | Il 30 agosto 2016 | Il 30 agosto 2016 | Doctrine DBAL migrazione Rendering dell'albero con SVG Sintassi di collegamento unificata Supporto PHP 7.1 | Doctrine DBAL migrazione Rendering dell'albero con SVG Sintassi di collegamento unificata Supporto PHP 7.1 |
| 8.x | 8.x | 08.04.00 | 08.04.00 | 18/10/16 | 18/10/16 | Backend mobile API della documentazione Migrazioni più facili Accedi ai valori di flexform tramite TypoScript. | Backend mobile API della documentazione Migrazioni più facili Accedi ai valori di flexform tramite TypoScript. |
| 8.x | 8.x | 08.05.00 | 08.05.00 | 20/12/16 | 20/12/16 | Nuovo framework dei moduli, Integrazione di CKEditor | Nuovo framework dei moduli, Integrazione di CKEditor |
| 8.x | 8.x | 08.06.00 | 08.06.00 | 14/02/17 | 14/02/17 | Miglioramenti nella modifica del frontend. | Miglioramenti nella modifica del frontend. |
| 8.x | 8.x | 8.7 LTS | 8.7 LTS | 04/04/17 | 04/04/17 | Long Term Support Release (LTS), correzioni di bug per 18 mesi, supporto di sicurezza per 36 mesi, fino a marzo 2020. | Long Term Support Release (LTS), correzioni di bug per 18 mesi, supporto di sicurezza per 36 mesi, fino a marzo 2020. |
| 9.x | 9.x | 09.00.00 | 09.00.00 | 12/12/17 | 12/12/17 | Primo di cinque versioni sprint per 9.x LTS. Strumento di installazione rifattorizzato nell'area di manutenzione del sistema. Nuova interfaccia utente dell'albero delle pagine. Nuove traduzioni di pagine. | Primo di cinque versioni sprint per 9.x LTS. Strumento di installazione rifattorizzato nell'area di manutenzione del sistema. Nuova interfaccia utente dell'albero delle pagine. Nuove traduzioni di pagine. |
| 9.x | 9.x | 09.01.00 | 09.01.00 | 30/01/18 | 30/01/18 | Gestione personalizzata dei reindirizzamenti URL. | Gestione personalizzata dei reindirizzamenti URL. |
| 9.x | 9.x | 09.02.00 | 09.02.00 | 10/04/18 | 10/04/18 | Nuovo modulo Sito per la configurazione di siti web e lingue separati in un progetto multisito. | Nuovo modulo Sito per la configurazione di siti web e lingue separati in un progetto multisito. |
| 9.x | 9.x | 09.03.00 | 09.03.00 | 12/06/18 | 12/06/18 | Estensione SEO aggiuntiva. | Estensione SEO aggiuntiva. |
| 9.x | 9.x | 09.04.00 | 09.04.00 | 04/09/18 | 04/09/18 | Routing URL per le pagine "Speaking URLs for Routing", XML Sitemap. | Routing URL per le pagine "Speaking URLs for Routing", XML Sitemap. |
| 9.x | 9.x | 9.5 LTS | 9.5 LTS | 02/10/18 | 02/10/18 | Long Term Support Release (LTS), correzioni di bug per 18 mesi, supporto di sicurezza per 36 mesi, fino a settembre 2021. | Long Term Support Release (LTS), correzioni di bug per 18 mesi, supporto di sicurezza per 36 mesi, fino a settembre 2021. |
| 10.x | 10.x | 10.00.00 | 10.00.00 | 23/07/19 | 23/07/19 | | |
| 10.x | 10.x | 10.01.00 | 10.01.00 | 01/10/19 | 01/10/19 | | |
| 10.x | 10.x | 10.02.00 | 10.02.00 | 03/12/19 | 03/12/19 | | |
| 10.x | 10.x | 10.03.00 | 10.03.00 | 25/02/20 | 25/02/20 | | |
| 10.x | 10.x | 10.4 LTS | 10.4 LTS | 21/04/20 | 21/04/20 | Long Term Support Release (LTS), completamente supportato per 1,5 anni, sicurezza e correzioni fino ad aprile 2023. | Long Term Support Release (LTS), completamente supportato per 1,5 anni, sicurezza e correzioni fino ad aprile 2023. |

## Sicurezza

TYPO3 potrebbe essere vittima di:
* SQL injection o SQLi: un hacker può inserire istruzioni SQL dannose nel sito ottenendo potenzialmente l’accesso a dati sensibili presenti nel database o distruggendo questi dati
* Cross-site scripting (XSS): permette a un cracker di inserire o eseguire codice lato client al fine di attuare un insieme variegato di attacchi quali, ad esempio, raccolta, manipolazione e reindirizzamento di informazioni riservate, visualizzazione e modifica di dati presenti sui server, alterazione del comportamento dinamico delle pagine web, ecc.
* Il Cross-site request forgery, abbreviato CSRF o anche XSRF, è una vulnerabilità a cui sono esposti i siti web dinamici quando sono progettati per ricevere richieste da un client senza meccanismi per controllare se la richiesta sia stata inviata intenzionalmente oppure no.
* Furto di identità
* Esecuzione di codice in modalità remota: ottenere l'accesso a un account con privilegi riservati almeno al livelloauthor su un sito di destinazione per eseguire codice PHP arbitrario sul server sottostante, portando a un'acquisizione remota completa.
* In un attacco di bypass dell'autorizzazione, un utente malintenzionato sfrutta le vulnerabilità in applicazioni o moduli di accesso mal progettati (ad esempio, convalida dell'input dei dati lato client)
* Divulgazione di informazioni. Ciò significa che il sistema rende (in determinate circostanze) le informazioni disponibili a una persona esterna ossia dati sensibili dell'utente (ad esempio nomi, indirizzi, dati del cliente, dettagli della carta di credito, ecc.) O dettagli sul sistema (come la struttura del file system, il software installato, le opzioni di configurazione, i numeri di versione, ecc.).