I Cookie
I cookie fanno parte del protocollo HTTP come integrazione e soluzione alla caratteristica del protocollo di essere stateless. Il cookie viene inviato al client dal server e re-inviato in ogni request successiva (per esempio per riconoscere l'utente). Il cookie consiste generalmente in una coppia nome/valore.
Esistono però altri attributi opzionali dell'header Set-Cookie e sono:
- Expires che indica la data di scadenza
- Domain il dominio verso cui il cookie è valido
- Path l'URL verso cui il cookie è valido
- Secure se questo attributo è impostato il cookie viene trasmesso in una request HTTPS
- HTTP only se questo attributo è impostato il cookie non può essere acceduto via script lato client e questo ci aiuta a evitare session hijacking con xss.
HTTPS e un'implementazione del protocollo HTTP attraverso ssl, quindi crittografato.
HTTP proxy
Un proxy HTTP intercetta le richieste di un client e le re-indirizza al server e viceversa mantenendo un controllo sul flusso dei dati. Nell'analisi e valutazione della sicurezza di un applicativo Web faremo un uso intenso di diversi proxy HTTP per intercettare e all'occorrenza manipolare request/response.
Encoding Scheme
Le applicazioni Web nascono basate sul testo, la trasmissione di caratteri speciali e dati binari viene quindi demandata all'utilizzo di schemi di codifica particolari. Ecco i più utilizzati.
URL encoding
La codifica Url (o percentuale) è un tipo di codifica che permette di codificare alcuni caratteri della codifica ascii estesa in maniera sicura attraverso il protocollo HTTP.
Esempio:
- %3d cui corrisponde =
- %25 cui corrisponde %
- %20 cui corrisponde uno spazio
- %0a cui corrisponde una nuova linea
Un altro carattere che possiamo trovare è il "+" che viene utilizzato al posto di %20. La codifica Url ci tornerà utile quando vorremo testare il filtro dell'input della nostra applicazione. Tradurremo infatti tutti i caratteri in Url encode per verificare se la validazione è efficace o meno.
Unicode
Unicode è lo standard per utilizzare tutte le lingue del mondo, si comporta in maniera analoga a Url encode.
Esempio:
- %u2215 cui corrisponde /
- %u00e9 cui corrisponde è
Html encoding
Html encoding è uno schema usato per rappresentare caratteri "problematici" all'interno di un documento html. Molti caratteri hanno infatti significato come metacaratteri all'interno di un html, sono quindi utilizzati per definire la struttura di un documento e non il suo contenuto. Per ovviare a questo problema, l'html encoding permette di definire numerosi caratteri html.
Esempio:
- " cui corrisponde "
- ' cui corrisponde '
- & cui corrisponde &
In aggiunta possono essere definiti utilizzando il codice ascii
- " cui corrisponde "
Oppure il codice esadecimale
- " cui corrisponde "
Base 64
La codifica base 64 permette ai dati binari di venire rappresentati utilizzando caratteri asci, è comunemente utilizzate per gli allegati e-mail per la trasmissione sicura attraverso il protocollo Smtp e nell'autenticazione Basic Http.
Hex
Il formato esadecimale anch'esso utilizzato per trasmettere dati binari. Non entriamo ulteriormente nel dettaglio delle codifiche, quando ne avremo bisogno utilizzeremo appositi convertitori.