Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Prečo je používanie existujúceho hesla nesprávne:
* ohrozené zabezpečenie: Ak môžete použiť staré heslo na nastavenie nového, každý, kto získa prístup k tejto schopnosti (napr. Rogue zamestnanec, hacker, ktorý ohrozuje váš systém), môže ticho zmeniť heslá používateľa a prevziať účty bez toho, aby to vedel používateľ.
* Strata zodpovednosti: Ak poznáte heslo používateľa, mohli by ste teoreticky vykonávať akcie ako tento používateľ. To znemožňuje audit a zodpovednosť. Nemôžete dokázať, že používateľ podnikol kroky, ako ste to mohli urobiť sami.
* Princípy ukladania hesla: Moderné systémy nikdy neukladajú heslá v PlaintExt. Sú hashed *a často *soľné *. Aj keď by ste * mohli * dostať uložený hash, použitie na jeho nastavenie nového hesla porazí účel hashovacieho algoritmu a zavádza zraniteľné miesta. Pokus o zvrátenie hash je výpočtovo náročné a potenciálne nemožné (navrhnuté týmto spôsobom!), Ale umožňuje prístup k zabezpečeniu zabezpečenia hesla.
Správny spôsob resetovania hesiel (dokonca aj s prístupom správcu):
Správne metódy zahŕňajú používateľa, ktorý iniciuje proces resetovania, alebo správca, ktorý spustí reset, ktorý * núti * užívateľ, aby po nasledujúcom prihlásení zvolil nové heslo.
1. Reset hesla iniciovaný používateľom (samoobsluha): Toto je preferovaná metóda.
* „Zabudnuté heslo“: Väčšina webových stránok a aplikácií má odkaz „Zabudnuté heslo“ alebo „Reset Heslo“.
* Overenie e -mailu: Používateľ klikne na odkaz, zadá svoju e-mailovú adresu (alebo používateľské meno) a systém im pošle e-mail s jedinečným časovo obmedzeným odkazom na stránku obnovenia hesla.
* Oplikácie bezpečnostných otázok/možností obnovy: Menej bežné, ale stále platné:používateľ odpovedá na bezpečnostné otázky, ktoré predtým nastavili, alebo používa vopred definovanú metódu obnovenia (napr. Telefónne číslo obnovy).
* Nový vstup hesla: Užívateľ klikne na odkaz, prevezme sa na stránku, kde môže zadať a potvrdiť nové heslo. Toto nové heslo je potom bezpečne hashované a uložené.
2. Reset hesla iniciovaný správcom (vynútenie zmeny):
* Admin panel/nástroj príkazového riadku: Správca používa nástroj so správnymi povoleniami na resetovanie stavu * hesla, nie na * nastaviť * priamo nové heslo.
* príznak pre zmenu hesla: Systém nastaví príznak na účte používateľa, ktorý ich núti zmeniť svoje heslo, keď sa nabudúce prihlásia.
* dočasné heslo (neodporúča sa): V * niektorých * veľmi špecifických prípadoch (a * iba *, ak nie sú k dispozícii iné možnosti), môže správca vygenerovať A * dočasné * heslo. Systém * musí * sily Užívateľ ho zmeniť na nové heslo okamžite po svojom prvom prihlásení s dočasným heslom. Toto je všeobecne zlá prax, pretože:
* Vyžaduje to uloženie dočasného hesla, dokonca aj stručne.
* Používatelia to nemôžu okamžite zmeniť, čím sa zvyšuje riziko.
Podrobnosti o implementácii (líšia sa podľa systému/jazyka):
Presný kód a kroky závisia od jazyka a rámca, ktorý používate (napr. Python s Django, PHP s laravel, Node.js s expresom atď.). Tu je všeobecný prehľad:
* backend (na strane servera):
* Hashing hesla: Používajte silný hashovací algoritmus ako Bcrypt, Argon2 alebo Scrypt (nie MD5 alebo SHA1, ktoré sa považujú za zlomené). Knižnice sú ľahko dostupné pre všetky hlavné jazyky.
* Generovanie soli: Generujte jedinečnú soľ pre každé heslo. Soľ je náhodná hodnota, ktorá je v kombinácii s heslom pred hashovaním. To zabraňuje útokom na stolové dúhy.
* Ukladanie hesla: Uložte * hash * a * soľ * do svojej databázy, nikdy heslo PlointExt.
* RESET TOKEN GENERÁCIA: Ak sa požaduje reset, vygenerujte jedinečný náhodný token (napr. UUID) a priradte ho s používateľom v databáze. Zahrňte časovú pečiatku na vypršanie tokenu po určitom období (napr. 1 hodina).
* E -mailové posielanie: Na odosielanie e -mailov použite knižnicu alebo službu. Uistite sa, že vaše e -maily sú správne naformátované a nevyzerajú ako spam.
* Token Validácia: Keď používateľ klikne na resetový odkaz, overte token proti databáze a skontrolujte, či existuje, nevypršal a je spojený so správnym používateľom.
* Aktualizácia hesla: Po úspešnej validácii povoľte používateľovi zadanie nového hesla, hash s novou soľou a aktualizujte databázu. Zbavte alebo vymažte resetový token.
* frontend (na strane klienta):
* zabezpečené formuláre: Použite HTTPS na šifrovanie komunikácie medzi prehliadačom a serverom.
* Merač pevnosti hesla: Poskytnite používateľovi vizuálnu spätnú väzbu o sile jeho hesla.
* Pole potvrdzovanie: Vyžadujte, aby užívateľ dvakrát zadal nové heslo, aby sa zabránilo preklepom.
Príklad (Konceptuálny python/django):
`` `Python
z django.contrib.auth.hashers import make_password, check_password
z django.contrib.auth.models Import User
importovať uuid
importovať datetime
def reset_password_request (e -mail):
skúsiť:
user =user.objects.get (email =email)
reset_token =uuid.uuid4 ()
user.profile.reset_token =reset_token # za predpokladu, že máte model UserProfile
user.profile.reset_token_expiry =datetime.datetime.now () + datetime.timedelta (hodiny =1)
user.profile.save ()
# Poslať e -mail s reset_token
send_password_reset_email (user.email, reset_token)
návrat pravda
Okrem používateľa.doesnotexist:
Vráťte false # alebo primerane spracujte chybu
def over_reset_token (token):
skúsiť:
user =user.objects.get (profil__Reset_token =token, profil__Reset_token_expiry__gt =datetime.datetime.now ())
užívateľ
Okrem používateľa.doesnotexist:
NOT
def set_new_password (user, new_password):
user.password =make_password (new_password) # hash nové heslo
user.profile.reset_token =none # neplaťovať token
user.profile.reset_token_expiry =none
user.profile.save ()
user.save ()
`` `
Kľúčové bezpečnostné úvahy:
* https: Na šifrovanie komunikácie vždy používajte HTTPS.
* Obmedzenie rýchlosti: Implementujte obmedzenie sadzby, aby ste zabránili útokom Brute Force na koncovom bode resetovania hesla.
* Token Expirácia: Nastavte primeranú dobu exspirácie pre resetovacie tokeny.
* Protokolovanie: Požiadavky na obnovenie hesla denníka a pokusy o účely auditu.
* Pravidelné bezpečnostné audity: Pravidelne skontrolujte implementáciu resetovania hesla, aby ste identifikovali a opravili potenciálne zraniteľné miesta.
* Princíp najmenších privilégií: Udeľte iba minimálne potrebné povolenia správcom, ktorí môžu iniciovať reseéty hesla.
Stručne povedané, poznanie existujúceho hesla používateľa by sa na resetovanie nikdy nemalo použiť. Použite metódy zabezpečených, iniciovaných používateľmi alebo iniciovanými správcom (zmenu vynútenia na nasledujúcom prihlásení) opísaných vyššie opísané na ochranu používateľských účtov a na udržanie bezpečného systému.