Sobes.tech
Junior — Middle

Πώς αποθηκεύονται και προστατεύονται οι κωδικοί των χρηστών στη βάση δεδομένων PostgreSQL;

sobes.tech AI

Απάντηση από AI

Στο PostgreSQL, οι κωδικοί πρόσβασης των χρηστών συνήθως δεν αποθηκεύονται στη βάση δεδομένων σε ανοιχτό κείμενο. Αντί αυτού, χρησιμοποιούνται hashing και αλάτι για την προστασία των κωδικών.

Κύριες προσεγγίσεις:

  • Σε επίπεδο εφαρμογής: ο κωδικός πρόσβασης του χρήστη hash-άρεται (π.χ., με bcrypt, Argon2 ή PBKDF2) με την προσθήκη ενός μοναδικού αλατιού, και αποθηκεύεται μόνο το hash.
  • Σε επίπεδο PostgreSQL: για αυθεντικοποίηση, το σύστημα διαχείρισης βάσεων δεδομένων χρησιμοποιεί το δικό του μηχανισμό, όπου οι κωδικοί αποθηκεύονται ως hashes (MD5 ή SCRAM-SHA-256).

Παράδειγμα αποθήκευσης κωδικού σε πίνακα χρηστών:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username TEXT UNIQUE NOT NULL,
  password_hash TEXT NOT NULL
);

Κατά την εγγραφή στην εφαρμογή:

const bcrypt = require('bcrypt');
const password = 'user_password';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
// αποθήκευση του hash στο πεδίο password_hash

Έτσι, ακόμα και σε περίπτωση παραβίασης της βάσης δεδομένων, οι πραγματικοί κωδικοί πρόσβασης των χρηστών παραμένουν προστατευμένοι.