Oggi sempre più persone sono connesse al web e da più luoghi.
Siamo collegati con i nostri laptop, telefoni e tablet e probabilmente abbastanza presto anche con dispositivi e accessori personali. Accediamo a internet da reti non attendibili e a volte anche ostili. Dato che gran parte delle nostre vite si sposta online, è imperativo adottare misure per proteggere i nostri dati e quelli dei nostri utenti.
Prima di tutto, in qualità di sviluppatori, dobbiamo conoscere la necessità e la praticità di SSL.
Che cos'è SSL? È l'acronimo di Secure Sockets Layer, un protocollo crittografico progettato per garantire la sicurezza delle comunicazioni su internet. Garantisce la privacy, tramite crittografia e integrità, per impedire lo snooping o la manomissione della tua connessione a internet. SSL ha i suoi difetti, ma è il modo principale, e in realtà l'unico, per garantire qualsiasi tipo di sicurezza della comunicazione dati su internet.
Secondo SSL Pulse, un anno fa c'era circa il 15% circa di adozione di SSL, che ora supera il 50%.
Due acronimi:
TLS: per la maggior parte degli intent e degli scopi corrisponde a SSL. Per essere precisi, SSL 3.1 è stato rinominato TLS e TLS è il nome dello standard IETF. Ma sono intercambiabili!
HTTPS. Si tratta di HTTP su SSL, ma solo del livello delle funzionalità di sicurezza di SSL e HTTP standard. Innanzitutto l'handshake client-server, utilizzando la crittografia a chiave pubblica/privata per creare una chiave condivisa, che viene utilizzata dalla seconda parte del protocollo SSL per criptare la comunicazione.
Il networking su internet può sembrare sicuro, immediato e veloce. Sembra di parlare direttamente con il sito web. Ma in realtà non si tratta di un legame diretto. Le nostre comunicazioni passano tramite un router Wifi, un ISP e potenzialmente altri proxy intermedi tra il tuo dispositivo e il sito web. Senza HTTPS, tutte le nostre comunicazioni sono in testo normale.
Il problema è che gli utenti raramente digitano un URL completo specificando HTTPS o fanno clic su un link utilizzando HTTP. Peggio ancora, è possibile montare un attacco (wo)man in the middle e sostituire HTTPS con HTTP. Uno strumento chiamato SSLstrip introdotto nel 2009 fa proprio questo. Firesheep, dal 2010, ha appena ascoltato le reti Wi-Fi aperte per verificare se i cookie venivano inviati in chiaro: ciò significava poter ascoltare in chat o accedere all'account Facebook di qualcuno.
Tuttavia, SSL è (relativamente) economico, rapido e facile da implementare (consulta il sito ssllabs.com e il libro High Performance Browser Networking di Ilya Grigorik). Per uso non commerciale, puoi persino ottenere certificati senza costi da startssl.com. Il blocco della chiave pubblica è progettato per offrire agli operatori dei siti web un mezzo per limitare le autorità di certificazione che possono effettivamente rilasciare certificati per i loro siti.
"Nel gennaio 2010, Gmail è passato all'utilizzo del protocollo HTTPS per tutti i servizi per impostazione predefinita. .. Per fare questo non abbiamo dovuto eseguire il deployment di macchine aggiuntive né hardware speciali. Sulle nostre macchine frontend di produzione, SSL rappresenta meno dell'1% del carico della CPU, < 10 kB di memoria per connessione e meno del 2% dell'overhead di rete...
Se smetti di leggere ora devi solo ricordare una cosa: SSL non è più costoso dal punto di vista di calcolo."
– Overclocking SSL, Adam Langley (Google)
Infine, un paio di bug che riscontriamo più comunemente:
- Contenuti misti: siti che utilizzano HTTP e HTTPS. L'utente si infastidirà perché dovrà fare clic su un pulsante di autorizzazione per caricare i contenuti. (Chrome e Firefox in realtà barrano i contenuti misti degli iframe). Assicurati che tutte le risorse in una pagina HTTPS vengano caricate tramite HTTPS utilizzando URL relativi o relativi a schema, ad esempio
<style src="//foo.com/style.css">
. - Cookie non sicuri:vengono inviati in chiaro tramite una connessione HTTP. Per evitare questo problema, imposta l'attributo secure sulle intestazioni dei cookie. Puoi anche utilizzare una nuova intestazione "Strict Transport Security" per richiedere SSL Transport Security (HSTS).
Possessi guadagnati
- Per la privacy e l'integrità dei dati degli utenti, è necessario utilizzare il protocollo SSL. È più facile, veloce e più economico che mai.
- Evita i comuni trucchi di implementazione, ad esempio bug dei contenuti misti o non impostare correttamente i bit dell'intestazione HTTP.
- Utilizza URL relativi o relativi allo schema.
- Scopri alcune delle novità più interessanti, come HSTS e il blocco dei certificati
Presentazioni:Hai SSL?