Test di sicurezza - Richiesta HTTP

Richieste HTTP

Un client HTTP invia una richiesta HTTP a un server sotto forma di un messaggio di richiesta che include il seguente formato:

  • Una linea di richiesta

  • Zero o più campi di intestazione (Generale | Richiesta | Entità) seguiti da CRLF

  • Una riga vuota (una riga con nulla che precede il CRLF) che indica la fine dei campi di intestazione

  • Facoltativamente un corpo del messaggio

La sezione seguente spiega ciascuna delle entità utilizzate nel messaggio HTTP.

Message Request-Line

La riga della richiesta inizia con un token del metodo, seguita dall'URI della richiesta, la versione del protocollo e termina con CRLF. Gli elementi sono separati da spazi SP caratteri.

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

Parliamo di ciascuna delle parti menzionate in Request-Line.

Metodi di richiesta

La richiesta Method indica il metodo eseguito sulla risorsa identificata dal dato Request-URI. Il metodo fa distinzione tra maiuscole e minuscole e dovrebbe essere sempre menzionato in maiuscolo. I seguenti metodi sono supportati in HTTP / 1.1:

S.No. Metodo e descrizione
1

GET

Viene utilizzato per recuperare informazioni da un determinato server utilizzando un determinato URI. Le richieste che utilizzano GET dovrebbero solo recuperare i dati e non dovrebbero avere altri effetti sui dati.

2

HEAD

È uguale a GET, ma trasferisce solo la riga di stato e la sezione di intestazione.

3

POST

Viene utilizzato per inviare dati al server. Ad esempio, informazioni sui clienti, caricamento di file, ecc. Utilizzando moduli HTML.

4

PUT

Sostituisce tutte le rappresentazioni correnti della risorsa di destinazione con il contenuto caricato.

5

DELETE

Rimuove tutte le rappresentazioni correnti della risorsa di destinazione fornita dall'URI.

6

CONNECT

Stabilisce un tunnel verso il server identificato da un dato URI.

7

OPTIONS

Descrive le opzioni di comunicazione per la risorsa di destinazione.

8

TRACE

Esegue un test di loopback dei messaggi lungo il percorso verso la risorsa di destinazione.

Request-URI

L'URI della richiesta è un Uniform Resource Identifier che identifica la risorsa su cui deve essere applicata una richiesta. Di seguito sono riportati i moduli più comunemente utilizzati per specificare un URI:

Request-URI = "*" | absoluteURI | abs_path | authority
S.No. Metodo e descrizione
1

L'asterisco *viene utilizzato quando la richiesta HTTP non si applica a una particolare risorsa, ma al server stesso. È consentito solo quando il metodo non si applica necessariamente a una risorsa. Per esempio, OPTIONS * HTTP/1.1

2

Il absoluteURIviene utilizzato quando viene effettuata una richiesta HTTP a un proxy. Al proxy viene richiesto di inoltrare la richiesta o di servirla da una cache valida e di restituire la risposta. Per esempio,GET https://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

3

La forma più comune di Request-URI è quella utilizzata per identificare una risorsa su un server o gateway di origine. Ad esempio, un client che desidera recuperare la risorsa sopra direttamente dal server di origine creerebbe una connessione TCP alla porta 80 dell'host "www.w3.org" e invierebbe le linee -

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

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

Note- Il percorso assoluto non può essere vuoto. Se nessuno è presente nell'URI originale, deve essere fornito come "/" (la radice del server)

Campi intestazione richiesta

I campi dell'intestazione della richiesta consentono al client di passare ulteriori informazioni sulla richiesta e sul client stesso al server. Questi campi fungono da modificatori di richiesta e sono disponibili i seguenti importanti campi di intestazione della richiesta che possono essere utilizzati in base al requisito:

  • 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

Puoi introdurre i tuoi campi personalizzati nel caso tu stia per scrivere il tuo client e server web personalizzati.

Richiedi esempi di messaggi

Ora mettiamolo insieme per formare una richiesta HTTP da recuperare hello.htm pagina dal server web in esecuzione su 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

Qui non stiamo inviando alcun dato di richiesta al server perché stiamo recuperando una pagina HTML del piano dal server. La connessione è un'intestazione generale e il resto tutte le intestazioni sono intestazioni di richiesta. Di seguito è riportato un altro esempio in cui inviamo i dati del modulo al server utilizzando il corpo del messaggio della richiesta:

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

Qui, l'URL fornito /cgi-bin/process.cgi viene utilizzato per elaborare i dati passati e di conseguenza viene riaccordata una risposta. Ilcontent-type dice al server che i dati passati sono semplici dati del modulo web e lengthè la lunghezza effettiva dei dati inseriti nel corpo del messaggio. L'esempio seguente mostra come passare l'XML del piano al server 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>