Asosiy kontentga o‘tish
Innovialabs

Parolni xavfsiz tiklash va akkauntni qayta tiklash: amaliy qo‘llanma

Amaliyot4 daq

Qisqacha

Faqat xeshi saqlanadigan tasodifiy, bir martalik va qisqa muddatli token yuboring, akkaunt bor-yo‘qligidan qat’i nazar bir xil javob bering, so‘rovlarni cheklang, tiklashdan keyin barcha sessiyalarni yoping va tiklash 2FA ni o‘chirib yubormasin.

Qisqa javob

Xavfsiz parol tiklashning beshta xususiyati bor:

  • Oldindan aytib bo‘lmaydigan token — kriptografik jihatdan ishonchli generatordan.
  • Qisqa muddat va bir martalik: havola faqat bir marta va qisqa vaqt ishlaydi.
  • Foydalanuvchilarni aniqlab bo‘lmaydi: email mavjud bo‘ladimi yoki yo‘qmi, javob bir xil.
  • Havolani so‘rash va undan foydalanishga limitlar.
  • Tiklashdan keyin tozalash: boshqa sessiyalar va tokenlar bekor qilinadi, foydalanuvchiga xabar boradi.

Akkauntni tiklash — tizimga kirishning muqobil yo‘li. Agar u asosiy kirishdan zaifroq bo‘lsa, hujumchi aynan shu yo‘ldan foydalanadi.

1-qadam: tokenni yaratish va saqlash

Ishonchli manbadan kamida 32 tasodifiy bayt oling — timestamp, foydalanuvchi ID yoki Math.random() emas. Bazada faqat tokenning xeshini saqlang, shunda baza sizib chiqsa ham ishlaydigan havolalar to‘plamiga aylanmaydi.

import crypto from "node:crypto";

const token = crypto.randomBytes(32).toString("base64url");
const tokenHash = crypto.createHash("sha256").update(token).digest("hex");
// saqlaymiz: user_id, token_hash, expires_at, used_at = null
// ochiq token faqat xatdagi havola ichida yuboriladi

Bu yerda oddiy SHA-256 yetarli: token uzun va tasodifiy. Sekin xesh funksiyalar odamlar o‘ylab topgan parollar uchun kerak.

2-qadam: muddat va bir martalik

  • Qisqa muddat qo‘ying: kunlar emas, daqiqalar yoki bir soat.
  • Tokenni atomar tarzda ishlatilgan deb belgilang, shunda ikkita parallel so‘rov ikkalasi ham o‘tib ketmaydi:
UPDATE password_resets
SET used_at = now()
WHERE token_hash = $1 AND used_at IS NULL AND expires_at > now()
RETURNING user_id;
  • Yangi tiklash so‘ralganda shu foydalanuvchining eski ishlatilmagan tokenlarini bekor qiling.
  • Tiklash sahifasida Referrer-Policy: no-referrer o‘rnating, shunda URL dagi token uchinchi tomon skriptlari va analitikaga sizib chiqmaydi.

3-qadam: foydalanuvchilarni aniqlashdan himoya

«Parolni unutdingizmi» formasi qaysi email ro‘yxatdan o‘tganini ko‘rsatmasligi kerak:

  • Har doim bitta xabar: «Agar bu manzil bilan akkaunt mavjud bo‘lsa, ko‘rsatmalarni yubordik».
  • Ikkala holatda ham javob vaqti o‘xshash bo‘lsin — xatni fon vazifasida yuborish yordam beradi.
  • Ro‘yxatdan o‘tish formasi va kirish xatolari shu ma’lumotni boshqa yo‘l bilan oshkor qilmasligini tekshiring.

4-qadam: limitlar

Email/akkaunt va IP manzil bo‘yicha cheklang:

  • xat so‘rovlarini — hech kim foydalanuvchi pochtasini va sizning pochta byudjetingizni to‘ldirib yubormasligi uchun;
  • token yoki SMS kodni kiritish urinishlarini — qisqa kodni terib topib bo‘lmasligi uchun;
  • CAPTCHA yoki kechikishni hammaga emas, faqat shubhali faollikda yoqing.

5-qadam: tiklashdan keyin nima bo‘ladi

  • Yangi parolni parollar uchun mo‘ljallangan funksiya bilan xeshlang (Argon2id, bcrypt yoki scrypt).
  • Barcha sessiyalar va refresh tokenlarni yoping, ehtimol joriysidan tashqari. Akkaunt o‘g‘irlangan bo‘lsa, hujumchini aynan shu chiqarib yuboradi.
  • Qolgan tiklash tokenlarini bekor qiling.
  • Xabar yuboring: «Parolingiz o‘zgartirildi. Agar bu siz bo‘lmasangiz, qo‘llab-quvvatlash xizmatiga yozing».
  • 2FA yoqilgan bo‘lsa, foydalanuvchini avtomatik kiritmang — avval ikkinchi omil.

Email yoki SMS

KanalAsosiy xavflarNima qilish kerak
Emaildagi havolaBuzilgan pochta, uzatib yuborilgan havolaQisqa muddat, bir martalik, o‘zgarish haqida xabar
SMS kodSIM swap, raqamning boshqaga berilishi, ushlab qolishUrinishlarga qat’iy limit; qimmatli akkauntlar uchun SMS yagona omil bo‘lmasin
Qo‘llab-quvvatlashIjtimoiy muhandislikYozma tekshiruv tartibi, «shoshilinch» degan istisnolarsiz

Tiklash uchun email yoki telefonni o‘zgartirish ham nozik amal: joriy parol yoki 2FA ni so‘rang va eski manzilga xabar yuboring.

Tiklash va 2FA

Parolni tiklash 2FA ni o‘chirmasligi kerak. Aks holda pochtaga kirish akkauntga to‘liq kirish beradi. Odatiy sxema:

  • tiklash faqat parolni o‘zgartiradi, kirish uchun baribir ikkinchi omil kerak;
  • ikkinchi omil yo‘qolgan bo‘lsa — 2FA sozlanganda berilgan zaxira kodlar;
  • zaxira kodlar bo‘lmasa — sekin qo‘lda bajariladigan jarayon: shaxsni tekshirish, kutish davri va 2FA o‘chirilishidan oldin barcha ma’lum kontaktlarga xabar.

Ko‘p uchraydigan xatolar

  • Muddatsiz yoki ko‘p marta ishlatiladigan tokenlar.
  • Tokenlarni foydalanuvchi yozuvi yonida ochiq holda saqlash.
  • «Email topilmadi» va «xat yuborildi» uchun turli xabarlar.
  • Parol o‘zgargandan keyin eski sessiyalar ishlashda davom etadi.
  • «Onangizning qizlik familiyasi» kabi maxfiy savollar — javoblar ko‘pincha ochiq yoki taxmin qilinadi.

Ko‘p beriladigan savollar

Kiritmagan xavfsizroq. Yangi parol o‘rnatilgach, odatiy usulda kirishni so‘rang yoki kamida 2FA yoqilgan bo‘lsa ikkinchi omilni talab qiling.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.