Internationalized Resource Identifier
# Internationalized Resource Identifier

IRI è l'acronimo di Internationalized Resource Identifier ed è attualmente uno standard proposto IETF.

Un IRI è una forma generale di Uniform Resource Identifier costituita, a differenza di una URI, da una sequenza di caratteri appartenenti all'Universal Character Set (Unicode/ISO 10646), e ciò significa che al suo interno possono occorrere caratteri non appartenenti all'insieme ASCII.

Un IRI può essere convertita in URI seguendo delle precise regole.

## Descrizione

Sebbene gli URI siano limitati a un sottoinsieme del set di caratteri US-ASCII (i caratteri al di fuori di tale set devono essere mappati a ottetti in base a una codifica di caratteri non specificata, quindi codificata in percentuale), gli IRI possono inoltre contenere la maggior parte dei caratteri dell'Universal Character Set (Unicode/ISO 10646), compresi i caratteri cinesi, giapponesi, coreani e cirillici.

Gli IRI estendono gli URI usando l'Universal Character Set, dove gli URI erano limitati ad ASCII, con molti meno caratteri. Gli IRI possono essere rappresentati da una sequenza di ottetti ma per definizione sono definiti come una sequenza di caratteri, perché gli IRI possono essere pronunciati o scritti a mano.

## Compatibilità

Gli IRI sono mappati agli URI per mantenere la compatibilità con le versioni precedenti con i sistemi che non supportano il nuovo formato.

### Mappatura di IRI in URI

La mappatura ha due scopi:

Sintattico. Molti schemi e componenti URI definiscono particolari restrizioni sintattiche. Le restrizioni specifiche dello schema vengono applicate agli IRI convertendo gli IRI in URI e verificando gli URI rispetto alle restrizioni specifiche dello schema stesso.

Identificazione delle risorse. Quando l'IRI viene utilizzato esclusivamente a fini identificativi, non è necessario mappare l'IRI su un URI. Tuttavia, quando un IRI viene utilizzato per una risorsa rappresentata come una sequenza di caratteri indipendente dai caratteri dell'UCS normalizzata secondo il modulo di normalizzazione C (NFC).

Per applicazioni e protocolli che non consentono il consumo diretto di IRI, l'IRI deve essere prima convertito in Unicode utilizzando la normalizzazione della composizione canonica (NFC), se non già in formato Unicode.

Tutti i punti di codice non ASCII nell'IRI devono essere successivamente codificati come UTF-8 e i byte risultanti codificati in percentuale per produrre un URI valido.

### Esempio

L'IRI

https://en.wiktionary.org/wiki/Ῥόδος

diventa l'URI

I punti di codice ASCII che sono caratteri URI non validi possono essere codificati allo stesso modo, a seconda dell'implementazione.

Questa conversione è facilmente reversibile; per definizione, convertire un IRI in un URI e viceversa produrrà un IRI che è semanticamente equivalente all'IRI originale, anche se può differire nella rappresentazione esatta.

Alcuni protocolli possono imporre ulteriori trasformazioni, ad esempio Punycode per le etichette DNS.

## Vantaggi

Ci sono motivi per vedere gli URI visualizzati in lingue diverse; per lo più, lo rende più facile per gli utenti che non hanno familiarità con l'alfabeto latino (A–Z). Supponendo che non sia troppo difficile per chiunque replicare Unicode arbitrario sulle proprie tastiere, questo può rendere il sistema URI più accessibile.

## Svantaggi

La combinazione degli IRI e gli URI ASCII può rendere molto più semplice eseguire attacchi di phishing che inducono qualcuno a credere di trovarsi su un sito diverso da quello che realmente sono. Ad esempio, si può sostituire un ASCII "a" www.myfictionalbank.comcon il sosia Unicode "α" per ottenere www.myfictionαlbank.come puntare quell'IRI a un sito dannoso. Questo è noto come attacco omografo IDN.

Sebbene un URI non fornisca alle persone un modo per specificare le risorse Web utilizzando i propri alfabeti, un IRI non chiarisce come è possibile accedere alle risorse Web con tastiere che non sono in grado di generare i caratteri internazionalizzati richiesti. Ciò significa che gli IRI sono ora gestiti in un modo molto simile a molti altri software che potrebbero richiedere l'uso di un metodo di input non tramite tastiera quando si tratta di testi in varie lingue.

