7.5.2. Valori di campo semanticamente equivalenti (Semantically Equivalent Field Values)
7.5.2. Valori di campo semanticamente equivalenti (Semantically Equivalent Field Values)
L'algoritmo di generazione della base della firma (Sezione 2.5) usa il valore di un campo HTTP come suo valore di componente. Nel caso comune, ciò equivale a prendere i byte effettivi del valore del campo come valore del componente sia per il firmatario sia per il verificatore. Tuttavia, alcuni valori di campo consentono trasformazioni dei valori in modi semanticamente equivalenti che alterano i byte usati nel valore stesso. Ad esempio, una definizione di campo può dichiarare che alcuni o tutti i suoi valori sono case insensitive o che hanno un trattamento speciale dei caratteri di spazio interni. Altri campi hanno trasformazioni attese dagli intermediari, come la rimozione dei commenti nel campo Via. In tali casi, un verificatore potrebbe essere ingannato usando il valore del campo trasformato equivalente, che differirebbe dai byte usati dal firmatario. Il verificatore avrebbe difficoltà a trovare questa classe di errori, poiché il valore del campo resta ancora accettabile per l'applicazione ma i byte effettivi richiesti dalla base della firma non corrisponderebbero.
Quando si elaborano tali campi, il firmatario e il verificatore devono concordare come gestire tali trasformazioni, se del caso. Un'opzione è non firmare campi problematici, ma occorre cura per garantire che resti ancora una copertura di firma sufficiente (Sezione 7.2.1) per l'applicazione. Un'altra opzione è definire un valore di canonicalizzazione specifico dell'applicazione per il campo prima che sia aggiunto al messaggio HTTP, ad esempio rimuovere sempre i commenti interni prima della firma o trasformare sempre i valori in minuscolo. Poiché queste trasformazioni sono applicate prima che il campo sia usato come input all'algoritmo di generazione della base della firma, la base della firma conterrà ancora semplicemente il valore in byte del campo come appare nel messaggio. Se le trasformazioni fossero applicate dopo l'estrazione del valore dal messaggio ma prima che sia aggiunto alla base della firma, potrebbero aprirsi superfici di attacco diverse come attacchi di sostituzione del valore all'applicazione. Tutte le regole aggiuntive specifiche dell'applicazione sono fuori dall'ambito di questa specifica e per loro natura queste trasformazioni danneggerebbero l'interoperabilità dell'implementazione al di fuori di quell'applicazione specifica. Si raccomanda che le applicazioni evitino l'uso di tali regole aggiuntive ove possibile.