Test de sécurité - Requête HTTP

Requêtes HTTP

Un client HTTP envoie une requête HTTP à un serveur sous la forme d'un message de requête qui comprend le format suivant -

  • Une ligne de demande

  • Zéro ou plus de champs d'en-tête (Général | Requête | Entité) suivis de CRLF

  • Une ligne vide (une ligne sans rien précédant le CRLF) indiquant la fin des champs d'en-tête

  • Facultativement un corps de message

La section suivante explique chacune des entités utilisées dans le message HTTP.

Ligne de demande de message

La Request-Line commence par un jeton de méthode, suivi de Request-URI, la version du protocole et se terminant par CRLF. Les éléments sont séparés par des caractères d'espace SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

Laissez-nous discuter de chacune des parties mentionnées dans Request-Line.

Méthodes de demande

La demande Method indique la méthode effectuée sur la ressource identifiée par le Request-URI. La méthode est sensible à la casse et doit toujours être mentionnée en majuscules. Les méthodes suivantes sont prises en charge dans HTTP / 1.1 -

S.No. Méthode et description
1

GET

Il est utilisé pour récupérer des informations sur le serveur donné en utilisant un URI donné. Les requêtes utilisant GET ne doivent récupérer que des données et ne doivent avoir aucun autre effet sur les données.

2

HEAD

Il est identique à GET, mais ne transfère que la ligne d'état et la section d'en-tête.

3

POST

Il est utilisé pour envoyer des données au serveur. Par exemple, les informations client, le téléchargement de fichiers, etc. à l'aide de formulaires HTML.

4

PUT

Il remplace toutes les représentations actuelles de la ressource cible par le contenu téléchargé.

5

DELETE

Il supprime toutes les représentations actuelles de la ressource cible données par URI.

6

CONNECT

Il établit un tunnel vers le serveur identifié par un URI donné.

sept

OPTIONS

Il décrit les options de communication pour la ressource cible.

8

TRACE

Il effectue un test de bouclage des messages le long du chemin vers la ressource cible.

Request-URI

Le Request-URI est un identificateur de ressource uniforme qui identifie la ressource sur laquelle une demande doit être appliquée. Voici les formulaires les plus couramment utilisés pour spécifier un URI -

Request-URI = "*" | absoluteURI | abs_path | authority
S.No. Méthode et description
1

L'astérisque *est utilisé lorsque la requête HTTP ne s'applique pas à une ressource particulière, mais au serveur lui-même. Elle n'est autorisée que lorsque la méthode ne s'applique pas nécessairement à une ressource. Par exemple, OPTIONS * HTTP/1.1

2

le absoluteURIest utilisé lorsque la requête HTTP est adressée à un proxy. Le proxy est invité à transférer la demande ou à la traiter à partir d'un cache valide et à renvoyer la réponse. Par exemple,GET https://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3

La forme la plus courante de Request-URI est celle utilisée pour identifier une ressource sur un serveur ou une passerelle d'origine. Par exemple, un client souhaitant récupérer la ressource ci-dessus directement depuis le serveur d'origine créerait une connexion TCP vers le port 80 de l'hôte "www.w3.org" et enverrait les lignes -

GET /pub/WWW/TheProject.html HTTP/1.1

Host: https://www.w3.org/

Note- Le chemin absolu ne peut pas être vide. Si aucun n'est présent dans l'URI d'origine, il doit être indiqué par "/" (la racine du serveur)

Demander des champs d'en-tête

Les champs d'en-tête de demande permettent au client de transmettre des informations supplémentaires sur la demande et sur le client lui-même au serveur. Ces champs agissent comme des modificateurs de demande et les champs d'en-tête de demande importants suivants sont disponibles et peuvent être utilisés en fonction des besoins -

  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Authorization
  • Expect
  • From
  • Host
  • If-Match
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Max-Forwards
  • Proxy-Authorization
  • Range
  • Referer
  • TE
  • User-Agent

Vous pouvez introduire vos champs personnalisés au cas où vous allez écrire votre propre client et serveur Web personnalisés.

Demander des exemples de message

Maintenant, mettons tout cela ensemble pour former une requête HTTP à récupérer hello.htm page du serveur Web fonctionnant sur tutorialspoint.com -

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Ici, nous n'envoyons aucune donnée de demande au serveur car nous récupérons une page HTML de plan du serveur. La connexion est un en-tête général et tous les en-têtes sont des en-têtes de demande. Voici un autre exemple où nous envoyons des données de formulaire au serveur en utilisant le corps du message de demande -

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

licenseID = string&content = string&/paramsXML = string

Ici, l'URL donnée /cgi-bin/process.cgi est utilisée pour traiter les données transmises et en conséquence une réponse est réaccordée. lecontent-type indique au serveur que les données transmises sont de simples données de formulaire Web et lengthest la longueur réelle des données placées dans le corps du message. L'exemple suivant montre comment vous pouvez transmettre le plan XML à votre serveur Web -

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: text/xml; charset = utf-8
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<?xml version = "1.0" encoding = "utf-8"?>
<string xmlns = "http://clearforest.com/">string</string>