Sicuro come Fort Knox: come proteggere un sito Web dagli hacker

Pubblicato: 2021-10-05

In questo articolo, offriamo una guida su come proteggere un sito Web dall'hacking e dall'utilizzo per attività illegali.

La sicurezza online è un'enorme bandiera rossa nell'infinito cielo blu di Internet. E mentre le parole "sicurezza online" possono prima far pensare alle molestie online e alle protezioni per gli utenti, anche il danno che una mancanza di sicurezza del sito Web può avere su un'azienda è significativo. I proprietari di siti web che tagliano la spesa per la sicurezza pagano con la loro reputazione e, di conseguenza, subiscono perdite finanziarie.


Contenuti:

  1. Perché ogni proprietario di un sito web deve investire in sicurezza
  2. Di quali vulnerabilità stiamo parlando?
  3. Difetti di iniezione
  4. Esposizione di dati sensibili
  5. Attacchi di scripting cross-site (XSS)
  6. Autenticazione non funzionante
  7. Configurazione errata della sicurezza
  8. Controllo accessi rotto
  9. Deserializzazione insicura
  10. Registrazione e monitoraggio insufficienti
  11. Entità esterne XML (XXE)
  12. Utilizzo di componenti con vulnerabilità note
  13. Come creare un sito web sicuro
  14. Quanto costa mettere in sicurezza un sito web?

Perché OGNI proprietario di un sito web deve investire in sicurezza

investire nella sicurezza del sito web

Alcuni proprietari di siti web hanno pensieri come questi: non c'è niente da rubare sul mio sito web. Non conservo dati utente o dettagli di pagamento. Non ho bisogno di una costosa sicurezza di prima qualità.

Tuttavia, questo è semplicemente ingenuo. Ci sono una serie di motivi per cui il tuo sito web potrebbe essere violato anche se non ospita dati personali o finanziari. Ecco un elenco di usi che gli hacker potrebbero avere per quasi tutti i server non protetti:

  1. Per chiedere un riscatto. Anche se non conservi alcun dato utente sui tuoi server, gli hacker possono prenderne il controllo e richiederti denaro per recuperarli.
  2. Da utilizzare come inoltro SMTP (protocollo di trasferimento della posta semplice). SMTP è un protocollo utilizzato per inviare e-mail in blocco, ad esempio newsletter. Gli hacker possono utilizzare i tuoi server per inviare spam o ransomware.
  3. Per estrarre Bitcoin.
  4. Da utilizzare negli attacchi DDoS come parte di una botnet.
  5. Per modificare o eliminare i dati sul tuo sito web. Le ragioni per volerlo fare possono variare.

E questo è solo graffiare la superficie. Oltre alle minacce poste da terze parti (hacker e altri criminali), ci sono anche minacce poste da possibili errori da parte dei dipendenti che gestiscono il tuo sito web, ad esempio. In effetti, la sicurezza interna è importante quanto quella esterna, se non di più.

Quindi, come posso proteggere il mio sito Web dagli hacker? tu chiedi.

Bene, devi tenere conto e affrontare una serie di vulnerabilità.

Di quali vulnerabilità stiamo parlando?

Una delle entità più rinomate del settore che si occupa di sicurezza informatica è l'Open Web Application Security Project, in breve OWASP. La fondazione OWASP monitora e aggiorna regolarmente il proprio elenco di problemi di sicurezza web diffusi. Di seguito sono riportati i problemi di sicurezza comuni nel loro elenco (in nessun ordine particolare) al momento della stesura di questo articolo e alcuni suggerimenti su come ridurre il pericolo per il tuo sito web.

Difetti di iniezione

Difetti di iniezione

I difetti di iniezione riguardano i database e sono causati da una scarsa convalida dell'input. Quando il tuo sistema accetta l'input dell'utente ma non riesce a filtrare correttamente quell'input, rende il sistema vulnerabile: gli hacker possono sfruttarlo per iniettare il loro codice nel tuo sistema (da cui il nome). Questo codice iniettato può far sì che il tuo sito Web esegua comandi non previsti, visualizzando dati sensibili o addirittura cedendo il controllo del sito Web all'hacker.

Il tipo più diffuso di vulnerabilità di iniezione coinvolge i database SQL, ma le vulnerabilità di iniezione non si limitano a loro. Anche le query XPath, le istruzioni LDAP e gli script XML possono essere vulnerabili all'iniezione.

Come rendere sicuro un sito Web dai difetti di iniezione? Due delle migliori pratiche includono l'utilizzo della sanificazione delle query SQL e delle query con parametri. Ci sono API che ti permettono di farlo.

Se non vuoi implementare queste cose a mano, puoi usare uno strumento ORM (object-relational mapping) per il tuo linguaggio di programmazione preferito. Usiamo ActiveRecord perché è strettamente collegato all'ecosistema Rails.

Nessuna delle opzioni di cui sopra è completamente infallibile, ma è il più vicino possibile a una protezione solida in questi giorni.

Esposizione di dati sensibili

Esposizione di dati sensibili

I dati sensibili sono tutti i dati che possono essere utilizzati per sfruttare una persona in un modo o nell'altro:

  • Nome
  • Numero di Social Security
  • Numero di patente
  • Informazioni sulla carta di credito
  • Nomi utente e password
  • Data di nascita
  • Informazioni sulla salute
  • Nome da nubile
  • I nomi dei genitori

Può anche includere qualsiasi informazione che sia una risposta a una domanda di sicurezza, ad esempio per il tuo conto bancario. Chi avrebbe mai pensato che il nome del tuo primo animale domestico potesse essere considerato un dato sensibile, giusto?

Proteggere i siti Web dall'esposizione ai dati sensibili è difficile, poiché questa esposizione è difficile da prevedere e rilevare. Ma ci sono misure preventive che puoi prendere. I dati sensibili, se conservati su un sito web, non devono mai essere conservati come testo normale ; deve essere crittografato con la tecnologia più recente e trasmesso solo tramite canali sicuri.

Se il tuo sito web facilita qualsiasi transazione o generalmente tratta dati sensibili, deve utilizzare la crittografia SSL. Questa è l'ultima e la migliore tecnologia di crittografia disponibile. La crittografia SSL ti aiuta a trasferire in modo sicuro i dati tra un browser e un server o tra server. Inoltre, molti utenti cercheranno HTTPS nell'indirizzo del tuo sito web per vedere se è sicuro. Quell'intestazione è ciò che ottieni quando ottieni un certificato SSL.

In genere si consiglia inoltre di archiviare i dati nel cloud. Tuttavia, non dare per scontato che la semplice memorizzazione nel cloud renderà automaticamente i dati al sicuro. Tuttavia, tutte le misure di protezione devono essere implementate ed è necessario monitorare e aggiornare regolarmente la sicurezza.

Attacchi di scripting cross-site (XSS)

Le vulnerabilità XSS sono, in un certo senso, simili ai difetti di iniezione, poiché consentono agli hacker di influenzare le pagine del tuo sito Web iniettando codice non nativo. Nel caso di XSS, stiamo parlando di JavaScript injection. JavaScript iniettato da un hacker può modificare il contenuto della pagina, inserire collegamenti a siti Web dannosi e inviare all'hacker dati originariamente nascosti, con conseguente esposizione di dati sensibili.

Ruby on Rails e React hanno una protezione XSS integrata. Un'altra opzione per le misure anti-XSS e anti-iniezione sarebbe l'utilizzo dell'intestazione di risposta HTTP Content-Security-Policy.

Autenticazione non funzionante

Flusso di autenticazione interrotto

Originariamente chiamato "Autenticazione interrotta e gestione della sessione", questo difetto si occupa delle vulnerabilità durante l'autenticazione dell'utente e la gestione della sessione, come evidente dal nome. Ciò include l'esposizione delle credenziali di accesso e una serie di problemi con gli ID di sessione:

  • ID di sessione deboli
  • ID di sessione visualizzati negli URL
  • ID di sessione che non cambiano tra gli accessi
  • Trasmissione degli ID di sessione tramite connessioni non protette

Gli ID di sessione sono direttamente collegati all'identità di un utente, come le credenziali, e quindi intercettarli può portare al dirottamento dell'account di un utente. Questo porta a tutti i tipi di danni per i tuoi utenti, da quelli finanziari e reputazionali a quelli relativi alla salute.

Per rendere il tuo sito web sicuro dagli attacchi di autenticazione, richiedi l'autenticazione a più fattori : ad esempio, richiedi una password costante e una password monouso consegnata al dispositivo mobile dell'utente.

Google utilizza un'opzione per l'autenticazione a due fattori : per aprire il tuo account Google in un browser web, devi prima inserire la tua password. Se è corretto, devi anche aprire l'app Google sul tuo telefono e scegliere il numero mostrato nel browser web.

I metodi di protezione dei siti Web più ovvi per l'autenticazione non corretta includono:

  • applicazione della complessità della password : "La password deve essere lunga almeno 8 caratteri e includere almeno un numero, una lettera maiuscola e una lettera minuscola".
  • limitare i tentativi di accesso prima dei quali l'account viene sospeso (per un tempo specifico o fino a quando l'utente contatta gli amministratori del sito) e avvisare gli amministratori

Configurazione errata della sicurezza

L'errata configurazione della sicurezza è un argomento ampio, poiché ciò può verificarsi in qualsiasi fase e con qualsiasi parte del tuo sito Web: un database, una rete, un server, un framework, uno storage o qualsiasi altra cosa. I punti deboli della configurazione possono essere sfruttati per accedere alle funzionalità del sistema. A seconda di dove si trova la vulnerabilità, tale accesso può essere parziale o completo. Esempi di configurazione errata:

  • Non hai disabilitato account/password predefiniti.
  • Ci sono funzioni non necessarie e non utilizzate.
  • Le autorizzazioni di accesso al cloud non sono configurate in modo sicuro.
  • I tuoi messaggi di errore mostrano informazioni sensibili come nomi utente, password o indirizzi e-mail.

La prima cosa da fare per evitare errori di configurazione è rimuovere tutto ciò che è inutilizzato: funzionalità, campioni, framework e così via. Il passaggio successivo consiste nell'assicurare la stessa configurazione per tutti gli ambienti e controllarne regolarmente le prestazioni. Un'architettura ben congegnata è un must.

Controllo accessi rotto

Controllo accessi rotto

Il controllo degli accessi è il controllo su ciò che gli utenti possono e non possono fare. Quando non viene applicato correttamente, significa che gli utenti possono eseguire azioni che possono influenzare il tuo sito web in modi imprevedibili. Un modo per sfruttare il controllo degli accessi non valido consiste nel visualizzare e modificare i profili e i dati di altri utenti. Un altro è accedere alle funzionalità premium senza pagarle o guadagnarle. Un altro è l'accesso alle pagine di amministrazione da un account non amministratore (o peggio, senza un account).

Il modo migliore per garantire che il controllo dell'accesso al tuo sito web funzioni è il test manuale. Nessuno strumento di test automatizzato può garantire che il controllo degli accessi funzioni come previsto.

Il controllo degli accessi interrotto può anche derivare dall'abuso del meccanismo di condivisione delle risorse tra le origini (CORS), che può fornire l'accesso ad API altrimenti limitate. Per questo motivo si consiglia di utilizzare CORS il meno possibile.

Deserializzazione insicura

La serializzazione è il processo di trasformazione di un oggetto in un codice binario. La deserializzazione è, logicamente, l'opposto. Entrambi sono processi condotti regolarmente nello sviluppo web, il che rende importante implementare protezioni contro il loro utilizzo negli attacchi.

La buona notizia è che la deserializzazione non è qualcosa che un utente normale o un tuo dipendente può fare accidentalmente . Questa è anche, in parte, la cattiva notizia: gli attacchi di deserializzazione sono sempre deliberati e, quindi, feroci. Risultano anche nei problemi più gravi, come l'esecuzione di codice remoto, l'accesso al sito Web senza autenticazione e l'avvio di attacchi DoS (denial of service).
Il modo più semplice per proteggere il tuo sito Web da questo tipo di attacco è vietare gli oggetti serializzati generati dagli utenti. Se ciò non è possibile, l'opzione migliore è utilizzare le firme crittografiche per i controlli di integrità.

L'utilizzo di JSON, YAML o XML può rendere più difficile per gli hacker sfruttare i punti deboli della deserializzazione poiché questi formati non sono binari.

Registrazione e monitoraggio insufficienti

Registrazione e monitoraggio insufficienti

Questa vulnerabilità sembra abbastanza ovvia: se non monitori il tuo sito Web e non registri tutti gli errori e i tentativi falliti di accedere o eseguire funzionalità di controllo degli accessi , in pratica stai tentando gli hacker di attaccare il tuo sito web. In qualsiasi tipo di guerra, digitale o reale, il primo attacco di solito non riguarda la vittoria, ma il vedere con cosa si ha a che fare. E se c'è un modo semplice per entrare, lo usi. La mancata registrazione e monitoraggio di tale indagine farà sì che il sistema manchi del tutto l'attacco o lo rilevi una volta che è già avvenuto e il danno è stato fatto.

La registrazione è particolarmente importante per i siti di e-commerce, poiché si occupano del denaro e delle credenziali finanziarie degli utenti.

Per rendere il tuo sito web più sicuro, registra correttamente tutti i tentativi falliti e assicurati che questi registri siano archiviati e sottoposti a backup al di fuori dei tuoi server locali. Impiegare sistemi di avviso automatici per tali errori e, se possibile, sospendere gli account che generano continuamente tali errori. È fondamentale disporre di sistemi di avviso in tempo reale in modo da poter reagire immediatamente a una possibile violazione.

Entità esterne XML (XXE)

Abbiamo già menzionato XML (Extensible Markup Language) un paio di volte. È un linguaggio flessibile, che lo rende facile da usare e diffuso. I processori XML analizzano i dati dai documenti XML. Se il tuo sito Web è basato su XML e accetta caricamenti XML senza convalida, può essere soggetto ad attacchi.

Per proteggere l'integrità del tuo sito web, si consiglia la seguente serie di azioni:

  • Disabilita l'elaborazione DTD (definizione del tipo di documento).
  • Limita o impedisci i caricamenti XML o, se ciò non può essere fatto, applica la whitelisting: convalida positiva dell'input lato server.
  • Aggiorna regolarmente i tuoi processori e librerie XLM.
  • Impedisci la serializzazione dei dati sensibili.
  • Ove applicabile, utilizzare JSON o formati semplici simili.
  • Implementa Web Application Firewall (WAF) e gateway di sicurezza API.

Utilizzo di componenti con vulnerabilità note

Niente è perfetto e qualsiasi componente che utilizzi nel tuo software è destinato a presentare alcune vulnerabilità, note o sconosciute. In risposta alle vulnerabilità scoperte e riconosciute, il software viene aggiornato per coprire tali vulnerabilità o mitigare eventuali danni che possono essere causati dal loro sfruttamento. Alcuni punti deboli causano danni minori, ma altri potrebbero essere dannosi per la tua attività.

Per prevenire l'hacking del sito Web a causa di vulnerabilità note, è importante controllare regolarmente la disponibilità di aggiornamenti e aggiornare tutti i componenti utilizzati sul sito Web. Questo può essere un compito noioso in software e siti Web ricchi di componenti. Ecco perché gli esperti di sicurezza consigliano di controllare e rimuovere regolarmente librerie, funzionalità, file e altri componenti non necessari e inutilizzati. E, naturalmente, usa solo componenti da fonti ufficiali. Non lasciarti sedurre dai siti web che distribuiscono gratuitamente software solitamente a pagamento: può essere modificato per hackerare il tuo sito web.

Come creare un sito Web sicuro: la linea di fondo

Come creare un sito web sicuro

Per mettere tutte le informazioni tecnologiche in termini semplici, ecco i suggerimenti sulla sicurezza da seguire se si desidera creare un sito Web sicuro:

  • Trova un host web affidabile.
  • Aggiorna regolarmente tutti i software, i framework e le librerie utilizzati sul tuo sito web.
  • Rimuovi tutte le funzionalità e i componenti non necessari dal tuo sito web.
  • Configurare i sistemi per convalidare l'input sia sul lato browser che sul lato server.
  • Monitorare le informazioni visualizzate nei messaggi di errore.
  • Imposta un controllo della sicurezza della password per gli utenti.
  • Usa sempre password complesse per i tuoi server e le pagine di amministrazione e cambiale regolarmente.
  • Investi in un certificato SSL / usa il protocollo HTTPS.
  • Configurare la registrazione corretta per guasti ed errori.
  • Registra le transazioni di controllo (soprattutto se il tuo è un sito di e-commerce).
  • Monitora attentamente i log.
  • Usa i server cloud, ma proteggi comunque i tuoi dati.
  • Cripta sempre i dati sensibili utilizzando le ultime tecnologie.
  • Chiedi al tuo team di sicurezza di tenere d'occhio gli aggiornamenti di sicurezza emergenti e le nuove minacce per essere in grado di reagire agli attacchi in modo tempestivo.

Quanto costa mettere in sicurezza un sito web?

Questa è una domanda alla quale non c'è una risposta certa. Il costo della sicurezza dipende in larga misura dallo stack tecnologico utilizzato dal tuo sito. Inoltre, c'è il costo degli aggiornamenti, che dipenderà dal numero di componenti che devi aggiornare, dalla frequenza con cui li aggiorni e da quanto costa l'aggiornamento di ciascuno di essi. Questi costi devono essere calcolati individualmente dai tuoi sviluppatori.

Si consiglia vivamente di prendere in considerazione la sicurezza fin dall'inizio dello sviluppo . Lasciare il problema della sicurezza fino alla fine potrebbe (e molto probabilmente lo farà) comportare la necessità di introdurre modifiche al nucleo del tuo sito, che possono essere anche più costose rispetto alla creazione di sicurezza dall'inizio.

Conclusione

Se sei uno sviluppatore, possiedi una società di sviluppo o disponi di un team di sviluppo interno, puoi impostare tutte queste attività prima di loro. Tuttavia, se non hai già specialisti tecnici dalla tua parte e vuoi sapere come creare un sito Web sicuro con un fornitore di outsourcing, ti consigliamo di trovare una società di sviluppo che non solo possa costruire un sito Web, ma lo supporti. È quasi impossibile prevedere ogni vulnerabilità, ma la capacità di reagire a qualsiasi violazione in modo tempestivo può salvare il tuo sito Web dal peggior destino.

Gli sviluppatori di Mind Studios hanno esperienza nelle migliori pratiche di sicurezza e sono al passo con le ultime tendenze. Se hai domande su come proteggere il tuo sito web dagli hacker, contattaci per una consulenza gratuita .

Scritto da Svitlana Varaksina e Artem Chervichnik