PHP Creare cookie HTTPOnly
Link sponsorizzati
Allora, innanzitutto spiegamo a cosa possono servire i cookie HTTPOnly. Come molti di voi sanno, esistono tecniche di hacking che, sfruttando ad esempio le XSS, possono permettere di grabbare (rubare) i cookie. Ora, i cokkie per un sito sono importanti, specialmente se usati per registrare le sessioni di login. Ora, è possibile evitare questo problema creando dei cookie HTTPOnly. Cosa sono i cookie HTTPOnly?
Niete di particolare, sono dei normalissimi cookie, che però, a differenza di quelli ‘normali’, non sono accessibili tramite i linguaggi client side come il JavaScript. Per fare un esempio, creando un cookie HTTPOnly e facendo un alert con document.cookie, non si ottiene praticamente nulla.
Ora, vediamo come creare un cookie HTTPOnly attraverso un php, con due esempi normali, uno con cookie ‘classico’ e uno con cookie HTTPOnly.
Questo è il cookie classico, eseguendo questo codice vi viene mostrato un alert con scritto cookie=test. A dimostrazione del fatto che questo cookie è accessibile da JavaScript.
Link sponsorizzati
setcookie("cookie", "test", NULL, NULL, NULL, NULL, TRUE);
echo "<script>alert(document.cookie)";
?>
Questo è lo stesso codice di prima, soltanto che ora il cookie è HTTPOnly e che quindi l’alert mostrato sarà completamente vuoto (ricordatevi di eliminare tutti i cookie precedenti prima di fare la prova). La funzione setcookie funziona così
A noi serviva che l’ultimo parametro fosse a true e quindi abbiamo usato quella sintassi, passando a null tutti gli altri valori.
Ora, la stessa cosa vale per le sessioni, come sapete, quando in php si inizializza una sessione, il server memorizza su un cookie l’id di sessione che gli serve poi per recuperare i dati. Anche l’id di sessione può essere grabbato e quindi bisogna prestare attenzione, anche in questo caso si può settare questo cookie ad HTTPOnly ed evitare problemi di vario genere. Come prima vediamo due semplici esempi, uno che mostra che il cookie è accessibile al JavaScript e uno no.
Eseguendo questo esempio ci verrà mostrato un alternet con l’id di sessione generato, una cosa del tipo PHPSESSID= ecc ecc.
Ora, anche in questo caso, è possibile nascondere questo cookie al JavaScript per renderlo inaccessibile.
session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
session_start();
echo "<script>alert(document.cookie)";
?>
Questa volta l’alert mostrato sarà vuoto (ricordatevi sempre di eliminare i cookie prima di fare le prove).
La funzione session_set_cookie_params funziona così
Come vedete, anche in questo caso, settiamo l’ultimo parametro a true per dire che il cookie è HTTPOnly. Lo zero del primo parametro indica che la sessione scade quando ‘si chiude il browser’.
Link sponsorizzati


Complimenti per il Blog pieno di consigli e snippet interessanti
Grazie per i complimenti!