Beneficiare di specificare il set di caratteri Content-Type JSON?

4

In base allo standard di verifica della sicurezza delle applicazioni OWASP :

V11.3 Verify that every HTTP response contains a content type header specifying a safe character set (e.g., UTF-8).

Secondo RFC per l'applicazione / json Media Type :

JSON text SHALL be encoded in Unicode. The default encoding is UTF-8.

Since the first two characters of a JSON text will always be ASCII characters [RFC0020], it is possible to determine whether an octet stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking at the pattern of nulls in the first four octets.

Se la codifica è in realtà UTF-8, ciò implica che non vi è alcun vantaggio per la sicurezza di impostare l'intestazione Content-Type su application/json; charset=utf-8 anziché solo su application/json .

È ragionevole fare un'eccezione alla regola OWASP per application/json ?

    
posta oggmonster 03.03.2015 - 11:04
fonte

1 risposta

2

Il tuo più grande rischio sarebbe vecchie versioni di Internet Explorer che tentano di rilevare automaticamente la codifica come UTF-7 - denominato Codepage Sniffing .

Sembra che Internet Explorer lo farà solo per le pagine Web e non per le richieste AJAX. Pertanto le richieste JSON dovrebbero essere sicure. Inoltre, le richieste JSON non causano il rendering del contenuto direttamente alla pagina - avrebbero bisogno dell'elaborazione JavaScript per manipolare il DOM, quindi questo sarebbe preoccupante solo quando si stavano recuperando dati presumibilmente codificati in pre-HTML. Pertanto, se i dati JSON sono codificati in HTML sul client, la codifica della pagina dovrebbe avere la precedenza e non causerebbe la conversione di +ADw- sequenze di caratteri tra parentesi angolari, che è il rischio di UTF-7.

Quindi direi che specificare charset=utf-8 è necessario solo per Content-Type: text/html pagine.

    
risposta data 04.03.2015 - 10:45
fonte

Leggi altre domande sui tag