Test di sicurezza - Parametri HTTP

Parametri HTTP

Discuteremo qui alcuni importanti parametri del protocollo HTTP e la loro sintassi che sono necessari per costruire i messaggi di richiesta e risposta durante la scrittura di programmi client o server HTTP. Tratteremo l'uso completo di questi parametri nei capitoli successivi mentre spiegheremo la struttura del messaggio per le richieste e le risposte HTTP.

Versione HTTP

HTTP utilizza un file <major>.<minor>schema di numerazione per indicare le versioni del protocollo. La versione di un messaggio HTTP è indicata da un campo HTTP-Version nella prima riga. Ecco la sintassi generale per specificare il numero di versione HTTP:

HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT

Example

HTTP/1.0

or

HTTP/1.1

Identificatori di risorse uniformi (URI)

L'URI è semplicemente una stringa formattata, senza distinzione tra maiuscole e minuscole, contenente nome, posizione ecc. Per identificare una risorsa. Ad esempio, il nome di un sito Web, un servizio Web ecc. Una sintassi generale dell'URI utilizzato per HTTP è la seguente:

URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

Qui, se il file port è vuoto o non è specificato, si presume che la porta 80 per HTTP e vuota abs_path è equivalente a un abs_pathdi "/". I personaggi diversi da quelli inreserved e unsafe i set sono equivalenti alla loro codifica ""% "HEX HEX".

Example

I seguenti tre URI sono equivalenti:

http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html
http://ABC.com:/%7esmith/home.html

Formati data / ora

Tutti i timestamp di data / ora HTTP devono essere rappresentati in Greenwich Mean Time (GMT), senza eccezioni. Le applicazioni HTTP possono utilizzare una delle seguenti tre rappresentazioni di data / ora:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

Set di caratteri

Utilizzare set di caratteri per specificare i set di caratteri che il client preferisce. È possibile elencare più set di caratteri separati da virgole. Se non viene specificato un valore, il valore predefinito è US-ASCII.

Example

Sono validi i seguenti set di caratteri:

US-ASCII

or

ISO-8859-1

or 

ISO-8859-7

Codifiche dei contenuti

I valori di codifica del contenuto indicano che un algoritmo di codifica viene utilizzato per codificare il contenuto prima di trasmetterlo alla rete. Le codifiche dei contenuti vengono utilizzate principalmente per consentire a un documento di essere compresso o altrimenti trasformato in modo utile senza perdere l'identità.

Tutti i valori di codifica del contenuto non fanno distinzione tra maiuscole e minuscole. HTTP / 1.1 utilizza valori di codifica del contenuto nei campi di intestazione Accept-Encoding e Content-Encoding.

Example

I seguenti sono schemi di codifica validi:

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

Tipi di media

HTTP utilizza i tipi di media Internet in Content-Type e Acceptcampi di intestazione per fornire una digitazione dei dati aperta ed estensibile e la negoziazione del tipo. Tutti i valori del tipo di supporto vengono registrati con Internet Assigned Number Authority ((IANA). La sintassi generale seguente specifica il tipo di supporto:

media-type = type "/" subtype *( ";" parameter )

I nomi degli attributi di tipo, sottotipo e parametro non fanno distinzione tra maiuscole e minuscole.

Example

Accept: image/gif

Tag della lingua

HTTP utilizza tag di lingua all'interno di Accept-Language e Content-Languagecampi. Un tag della lingua è composto da 1 o più parti: un tag della lingua principale e una serie possibilmente vuota di sottotag -

language-tag = primary-tag *( "-" subtag )

Lo spazio vuoto non è consentito all'interno del tag e tutti i tag non fanno distinzione tra maiuscole e minuscole.

Example

I tag di esempio includono:

en, en-US, en-cockney, i-cherokee, x-pig-latin

Dove qualsiasi tag principale di due lettere è un'abbreviazione della lingua ISO-639 e qualsiasi sottotag iniziale di due lettere è un codice paese ISO-3166.