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

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

26 giugno 2024

Enza Neri

AULAB

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

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. 

Sei indeciso sul percorso? 💭

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626

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!