Test de sécurité - Paramètres HTTP

Paramètres HTTP

Nous discuterons ici de quelques paramètres de protocole HTTP importants et de leur syntaxe qui sont nécessaires à la construction des messages de requête et de réponse lors de l'écriture de programmes client ou serveur HTTP. Nous couvrirons l'utilisation complète de ces paramètres dans les chapitres suivants tout en expliquant la structure des messages pour les requêtes et réponses HTTP.

Version HTTP

HTTP utilise un <major>.<minor>schéma de numérotation pour indiquer les versions du protocole. La version d'un message HTTP est indiquée par un champ HTTP-Version dans la première ligne. Voici la syntaxe générale de la spécification du numéro de version HTTP -

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

Example

HTTP/1.0

or

HTTP/1.1

Identificateurs de ressources uniformes (URI)

L'URI est simplement une chaîne formatée, insensible à la casse, contenant le nom, l'emplacement, etc. pour identifier une ressource. Par exemple, un nom de site Web, un service Web, etc. Une syntaxe générale d'URI utilisée pour HTTP est la suivante -

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

Ici, si le port est vide ou non fourni, le port 80 est supposé pour HTTP et un abs_path équivaut à un abs_pathde "/". Les personnages autres que ceux dureserved et unsafe les ensembles sont équivalents à leur codage ""% "HEX HEX".

Example

Les trois URI suivants sont équivalents -

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

Formats de date / heure

Tous les horodatages HTTP doivent être représentés en heure moyenne de Greenwich (GMT), sans exception. Les applications HTTP sont autorisées à utiliser l'une des trois représentations suivantes des horodatages -

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

Jeux de caractères

Vous utilisez un jeu de caractères pour spécifier les jeux de caractères que le client préfère. Plusieurs jeux de caractères peuvent être répertoriés séparés par des virgules. Si aucune valeur n'est spécifiée, la valeur par défaut est US-ASCII.

Example

Les jeux de caractères suivants sont valides -

US-ASCII

or

ISO-8859-1

or 

ISO-8859-7

Codages de contenu

Les valeurs de codage du contenu indiquent qu'un algorithme de codage est utilisé pour coder le contenu avant de le transmettre sur le réseau. Les codages de contenu sont principalement utilisés pour permettre à un document d'être compressé ou autrement utilement transformé sans perdre son identité.

Toutes les valeurs de codage de contenu sont insensibles à la casse. HTTP / 1.1 utilise des valeurs de codage de contenu dans les champs d'en-tête Accept-Encoding et Content-Encoding.

Example

Les schémas de codage suivants sont valides -

Accept-encoding: gzip

or

Accept-encoding: compress

or 

Accept-encoding: deflate

Types de médias

HTTP utilise les types de média Internet dans le Content-Type et Acceptchamps d'en-tête afin de fournir un typage de données ouvert et extensible et une négociation de type. Toutes les valeurs de type de média sont enregistrées auprès de l’autorité de numéro attribué par Internet ((IANA). La syntaxe générale suivante spécifie le type de média

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

Les noms d'attributs de type, sous-type et paramètre ne sont pas sensibles à la casse.

Example

Accept: image/gif

Balises de langue

HTTP utilise des balises de langue dans le Accept-Language et Content-Languagedes champs. Une balise de langue est composée d'une ou plusieurs parties: Une balise de langue principale et une série éventuellement vide de sous-balises -

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

Les espaces blancs ne sont pas autorisés dans la balise et toutes les balises sont insensibles à la casse.

Example

Les exemples de balises incluent -

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

Où une étiquette primaire à deux lettres est une abréviation de langue ISO-639 et toute sous-étiquette initiale à deux lettres est un code de pays ISO-3166.