La sicurezza di un sito Web

Sei sicuro che il tuo sito web sia sicuro?

Le falle o vulnerabilità delle applicazioni sono difetti di sistema o di debolezza in un’applicazione che potrebbero essere sfruttate per compromettere la sicurezza dell’applicazione. Esistono molti modi che un hacker può sfruttare per attaccare un sito: dai plugin di WordPress, ai Javascript, ai form di contatto o di caricamento di files,

Se il sito è un sito istituzionale, al solo scopo di offrire informazioni non rilevanti e senza interazione con l’utente, un eventuale attacco è solo fastidioso ed in genere risolvibile in poco tempo.

Ma se il nostro sito è un’applicazione, contiene dati sensibili o condivide dati importanti tra utenti, raccoglie ad esempio ordini, gestisce spedizioni, il problema di un attacco è serio e non va assolutamente sottovalutato. E non parliamo solamente della perdita dei dati, ma pensiamo al valore che potrebbero avere le informazioni carpite da un hacker magari forzando il nostro database online.

La  Open Web Application Security Project (OWASP) è una organizzazione non-profit dedicata a fornire indicazioni pratiche ed imparziali sulla sicurezza delle applicazioni. La OWASP Top 10, aggiornata con frequenza, elenca le falle  di sicurezza più critiche e diffuse delle applicazioni web. Gli errori in questa lista si verificano di frequente nelle applicazioni web, sono spesso facili da trovare, e facile da sfruttare. Sono pericolosi perché consentono agli aggressori di prendere completamente il controllo del software, rubare dati o impedire al software di funzionare.

Nel grafico sotto possiamo vedere la percentuale di siti web che non superano il test iniziale della valutazione del rischio per le falle presenti nella Top 10 di OWASP

Failed-OWASP

Cosa fare?

Come è possibile verificare la sicurezza di un sito web?

Esistono svariati sistemi di controllo.

I modi con cui attaccare un sito sono molti, alcuni dei più diffusi sono elencati sotto: fortunatamente esistono anche strumenti che consentono di analizzare eventuali falle e correre ai ripari prima che sia troppo tardi.

Quello che segue è una elenco delle più diffuse falle di sicurezza Web, tra cui, ma non limitato a, Cross-Site Scripting, SQL injection, iniezione CSRF.

Le più comuni falle di sicurezza

CRLF Injection

CRLF Si riferisce ai caratteri speciali “Carriage Return” e “Line Feed.” Si verificano quando un hacker è in grado di iniettare una sequenza CRLF in un flusso HTTP.

Cross-site request forgery

Il cross-site request forgery (CSRF) è un attacco malevolo che inganna il browser web dell’utente per eseguire azioni indesiderate in modo che appaiano come se un utente autorizzato eseguisse queste azioni.

Cross-Site Scripting XSS

Attaccano gli script incorporati in una pagina che vengono eseguiti sul lato client (browser Web dell’utente) piuttosto che sul lato server.

Directory Traversal

Directory traversal è un tipo di attacco HTTP che viene utilizzato dagli hacker per ottenere l’accesso non autorizzato ai file e directory con restrizioni.

Failure to Restrict URL Access

Questa falla è una delle vulnerabilità più comuni elencate tra le Top 10 del progetto Open Web Application Security (OWASP). Si verifica quando vi è un errore nei dettagli del controllo accessi con il risultato che un utente può accedere a files e risorse che dovrebbero essere nascoste o protette. La OWASP Top 10 descrive le vulnerabilità più critiche nelle applicazioni web.

Insecure Cryptographic Storage

Si tratta di una vulnerabilità comune che si verifica quando i dati sensibili non vengono memorizzati in modo sicuro da utenti interni.

Insufficient Transport Layer

È una falla di sicurezza causata da applicazioni che non adottano misure sufficienti per proteggere il traffico di rete.

LDAP Injection

iniezione LDAP è la tecnica di sfruttare le applicazioni web che utilizzano dati fornite dal client di dichiarazioni LDAP senza prima strippaggio caratteri potenzialmente nocivi dalla richiesta.

SQL Injection

È un tipo di vulnerabilità delle applicazioni web in cui un hacker è in grado di inviare un comando al database SQL, che viene eseguito da un’applicazione web, esponendo il database back-end.