CONTATTACI

Blog

Illustrazione di un developer che ha a che fare con database e archivi

Cyber sicurezza: come salvare le password nel database in modo sicuro

La cyber-security è diventata una preoccupazione cruciale nell’era digitale. Con l’aumento degli attacchi informatici e delle violazioni dei dati, proteggere le informazioni sensibili è fondamentale. Una delle pratiche più importanti in questo contesto è la gestione delle password nei database. In questo articolo, esploreremo come salvare le password nei database in modo sicuro, concentrandoci su tecniche e best practice essenziali. Proviamo, innanzitutto, a fornirti un po’ di contesto, spiegandoti cos’è la ciber-security e cosa fa un cyber security specialist.

Cos’è la Cyber Security?

La cyber sicurezza, nota anche come cybersecurity, è una branca dell’informatica strettamente correlata alla protezione di dati, sistemi, device fisici, con tecniche che mirano a sventare cyber-attacchi rivolti a ledere chiunque possieda un dispositivo elettronico o connesso ad una rete internet. Gli attacchi informatici mirano spesso ad accedere, modificare o distruggere informazioni sensibili, estorcere denaro agli utenti o interrompere i normali processi aziendali. 

L’esperto di cybersecurity cosa fa?

L’esperto di cyber security, in linea generale, si occupa di implementare misure di difesa per proteggere l’integrità, la riservatezza e la disponibilità delle informazioni. Questo include la protezione dei dati degli utenti, la sicurezza delle reti e la prevenzione degli accessi non autorizzati a luoghi, account o dispositivi sorvegliati.

 

Fatte nostre le definizioni di base, entriamo nel vivo e proviamo ad esplorare il mondo dei database e le modalità per salvare le password al suo interno in modo sicuro.

Cos’è un Database?

Come dicevamo, per capire come salvare le password in modo sicuro, dobbiamo prima rispondere alla domanda: database cos’è? Un database è una raccolta organizzata di dati che possono essere facilmente gestiti, aggiornati e recuperati. I database possono essere database relazionali oppure NoSQL. Un esempio comunissimo di database relazionale è il database MySQL.

Vediamo insieme alcuni good habit per salvare in modo sicuro le password all’interno di un database.

1. Non Salvare Mai le Password in Chiaro

La regola d’oro è di non salvare mai le password in testo semplice. Se un database viene compromesso, tutte le password degli utenti diventano immediatamente accessibili agli attaccanti. Usare un campo di testo per memorizzare una password di qualsiasi tipo è una terribile idea, ma anche archiviarla crittografata utilizzando un algoritmo a due vie è un metodo errato.

Per stare “tranquilli” bisogna eseguire l’hashing della password utilizzando un salt diverso per ogni utente che utilizza un algoritmo unidirezionale e archiviare il risultato, rimuovendo la password originale. Quindi, quando si desidera verificare una password, si esegue nuovamente l’hashing della password in testo semplice utilizzando lo stesso algoritmo di hashing e lo stesso salt e lo si confronta con il valore memorizzato con hash nel database.

2. Utilizzare Hash Sicuri

Utilizzare algoritmi di hashing robusti è fondamentale per proteggere le password. L’hashing è un processo che trasforma una password in una stringa di caratteri fissa e apparentemente casuale. Gli algoritmi comuni includono bcrypt, scrypt e Argon2. Molte di questi sono integrati in librerie JavaScript o Node.JS.

3. Utilizzare Salt

Un salt è un valore casuale aggiunto alla password prima che venga hashata. Questo rende ogni hash unico, anche se due utenti hanno la stessa password. Il salt previene attacchi di dizionario e attacchi con rainbow table. Un salt è un dato casuale utilizzato come input aggiuntivo per un algoritmo unidirezionale che esegue l’hashing dei dati.

4. Impostare Politiche di Password Sicure

Le politiche di password sicure includono requisiti per la lunghezza minima, la complessità (combinazione di lettere, numeri e caratteri speciali) e la scadenza delle password. Questo rende più difficile per gli attaccanti indovinare o forzare una password. Ci sono degli standard che andrebbero rispettati (e fatti rispettare) a chi decide di creare una password, in modo tale da rendere questa stringa il più robusta possibile.

5. Utilizzare l’Autenticazione a Due Fattori (2FA)

L’autenticazione a due fattori aggiunge un ulteriore livello di sicurezza richiedendo all’utente di fornire due forme di identificazione prima di accedere. Questo può includere una password e un codice inviato al dispositivo mobile dell’utente. Ci sono molti package o algoritmi che già permettono di implementare la 2FA, che possono essere integrati con l’hashing di una password all’interno di un database.

Ecco un esempio pratico passando per MySQL:

 

CREATE TABLE utenti (
	id INT AUTO_INCREMENT PRIMARY KEY,
	username VARCHAR(50) NOT NULL UNIQUE,
	password_hash VARCHAR(255) NOT NULL,
	salt VARCHAR(255) NOT NULL
);

A questo passaggio si lega l’hashing:

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Main {
	public static void main(String[] args) {
    	String password = "HackAdemy_4UL4B";
    	String salt = BCrypt.gensalt();
    	String hashedPassword = BCrypt.hashpw(password, salt);

    	try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_database", "username", "password")) {
        	String query = "INSERT INTO users(username, password_hash, salt) VALUES (?, ?, ?)";
        	PreparedStatement stmt = conn.prepareStatement(query);
        	stmt.setString(1, "user1");
        	stmt.setString(2, hashedPassword);
        	stmt.setString(3, salt);
        	stmt.executeUpdate();
    	} catch (Exception e) {
        	e.printStackTrace();
    	}
	}
}

La protezione delle password degli utenti è una componente critica della cyber sicurezza. Capire il significato della cyber security ed implementare pratiche robuste per il salvataggio delle password nei database è fondamentale per prevenire violazioni dei dati e proteggere le informazioni sensibili. 

Sei affascinato dalla Cyber-Security? Iscriviti al prossimo Corso Cyber Security DevSecOps Expert in partenza!

Articoli correlati

Il linguaggio HTML (Hypertext Markup Language) è uno dei più conosciuti e diffusi: lo si trova infatti praticamente in tutte le pagine web esistenti. È una scelta popolare tra i principianti che si…

Seguici su Facebook

Vuoi entrare nel mondo della programmazione?

Scopri di più sui nostri corsi!

Chiamaci al numero verde

Contattaci su WhatsApp

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.