Sobes.tech
Junior — Middle

Ինչպե՞ս է պահվում և պաշտպանվում օգտվողների գաղտնաբառերը PostgreSQL տվյալների բազայում։

sobes.tech AI

Պատասխան AI-ից

PostgreSQL-ում օգտվողների գաղտնաբառերը սովորաբար չեն պահվում բացատ տեքստով տվյալների բազայում: Փոխարենը, օգտագործվում են հեշավորում և աղիք՝ գաղտնաբառերը պաշտպանելու համար:

Հիմնական մոտեցումները:

  • Ապլիկացիայի մակարդակում՝ օգտվողի գաղտնաբառը հեշավորվում է (օրինակ՝ bcrypt, Argon2 կամ PBKDF2)՝ ավելացնելով յուրահատուկ աղիք, և միայն հեշը պահվում է տվյալների բազայում:
  • PostgreSQL մակարդակում՝ հաստատման համար, տվյալների բազան օգտագործում է իր սեփական մեխանիզմը, որտեղ գաղտնաբառերը պահվում են հեշերի տեսքով (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 դաշտում

Այսպիսով, նույնիսկ տվյալների բազայի խախտումից հետո, օգտվողների իրական գաղտնաբառերը մնում են պաշտպանված։