Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Pochopenie požiadaviek
* 6 a 10 znakov: To znamená, že dĺžka hesla by mala byť * medzi * 6 a 10 znakmi vrátane. Takže 6, 7, 8, 9 alebo 10 znakov sú platné dĺžky.
* alfanumerické: To znamená, že heslo môže obsahovať iba písmená (A-Z, A-Z) a čísla (0-9). Nie sú povolené žiadne špeciálne znaky (napríklad!, @, #, $, %Atď.).
regulárny výraz (regex) pre validáciu
Regulárny výraz je silný spôsob, ako definovať vzor pre text. Tu je regex, ktorý zodpovedá vašim požiadavkám:
`` regex
^[a-za-z0-9] {6,10} $
`` `
Vysvetlenie regexu:
* `^`:Zhoduje sa so začiatkom reťazca.
* `[A-ZA-Z0-9]`:Zhoduje sa s akýmkoľvek veľkým písmenom (A-Z), malým písmenom (A-Z) alebo číslicou (0-9).
* `{6,10}`:Zhoduje sa s predchádzajúcim znakom (alfanumerický znak) medzi 6 a 10 -krát (vrátane).
* `$`:Zhoduje sa s koncom reťazca.
Príklad kódu (JavaScript)
`` `JavaScript
funkcia isvalidPassword (heslo) {
const regex =/^[a-za-z0-9] {6,10} $ /;
return regex.Test (heslo);
}
// príklady
Console.log (IsvalidPassword ("p@sSword")); // false (špeciálny znak)
Console.log (IsvalidPassword ("Pass1")); // false (príliš krátke)
Console.log (IsvalidPassword ("Password12345")); // false (príliš dlhé)
Console.log (IsvalidPassword ("Pass12")); // pravda
Console.log (IsvalidPassword ("Password12")); // pravda
Console.log (IsvalidPassword ("P12345678")); // pravda
Console.log (IsvalidPassword („heslo“)); // pravda
`` `
Vysvetlenie kódu JavaScript:
1. `IsvalidPassword (heslo)` Funkcia: Táto funkcia berie reťazec hesla ako vstup.
2. Táto čiara definuje regulárny výraz (ako je vysvetlené vyššie).
3. `Return regex.Test (heslo);`: Toto je kľúčová čiara. Metóda `regex.Test (heslo)` Skontroluje, či reťazec `heslo` sa zhoduje s vzorom` regex`. Vráti sa „true“, ak sa zhoduje s a „false“ inak.
Ďalšie úvahy a osvedčené postupy
* Zabezpečenie: Aj keď to presadzuje základné požiadavky, často sa odporúča pridávať zložitosť hesiel pre lepšiu bezpečnosť. Zvážte požadovanie aspoň jedného veľkého písmena, jedno malé písmeno a jedno číslo.
* Chybové správy: Poskytnite používateľovi jasné a užitočné chybové správy, ak jeho heslo nespĺňa požiadavky. Napríklad:
* „Heslo musí byť medzi 6 a 10 znakmi.“
* „Heslo musí obsahovať iba písmená a čísla.“
* hashing: * Nikdy* ukladajte heslá do obyčajného textu. Vždy ich hash pomocou silného algoritmu hashovania (ako Bcrypt, Argon2 alebo Scrypt) pred ich uložením do databázy. Chráni to heslá, aj keď je ohrozená vaša databáza.
* Solovanie: Pred hashovaním používajte pre každé heslo vždy jedinečnú, náhodne generovanú soľ. Vďaka tomu je pre útočníkov oveľa ťažšie používať vopred vypočítané tabuľky bežných hashov hesla (dúhové tabuľky).
* Meračy sily hesla: Zvážte použitie merača sily hesla, aby ste používateľom poskytli spätnú väzbu o tom, ako bezpečné je vybrané heslo. Knižnice sú k dispozícii pre mnoho programovacích jazykov.
Upravený JavaScript so silnejšími odporúčaniami (bezpečnejšie)
Tento príklad obsahuje zložitejší regex a začiatky lepšieho procesu vytvárania a ukladania hesla. Upozorňujeme, že pre skutočný systém by ste použili jazyk * na strane servera * na hashovanie a solenie, nie JavaScript na strane klienta. Je to len pre ilustráciu.
`` `JavaScript
funkcia isvalidStrongPassword (heslo) {
// vyžaduje 6-10 znakov, aspoň jedno veľké písmená, jedno malé písmená, jedno číslo
Const Regex =/^(?=.*[a-ZΩ)(?=.* Ta-ZΩ)(?=.*\d) Ta -za-Z\d] {6,10}$/;
return regex.Test (heslo);
}
// demonštrovanie hashovania hesla (nikdy nerobte túto stránku klienta v reálnom kóde!)
funkcia hashpassword (heslo, soľ) {
// V skutočnej aplikácii používajte jazyk na strane servera (node.js, python, php atď.)
// s knižnicou Bcrypt/Argon2/Scrypt na vykonanie správneho hashovania a soli
// Varovanie:BTOA a TexTencoder Javascript nie sú určené na zabezpečené hashovanie hesla!
// Je to len pre ilustratívny príklad.
Const SaltedPassword =Salt + heslo; // soľ heslo
const CONDODESPASSWORD =new TexTenCoder (). Encode (SaltedPassword);
const hashbuffer =array.from (CododedPassword)
.map (bajte => byte.tostring (16) .PadStart (2, '0')) // Prevod na hex String
.noin ('');
návrat hashbuffer;
}
funkcia generteAtesAlt () {
// V skutočnej aplikácii použite CSPRNG na vytvorenie dlhého náhodného reťazca.
return Math.random (). ToString (36) .SubString (2, 15) + Math.random (). Tostring (36) .Substring (2, 15);
}
// Príklady silnejších hesiel
Console.log (IsValidStrongPassword ("p@sword")); // false (špeciálny znak)
Console.log (IsValidStrongPassword ("Pass1")); // false (príliš krátke)
Console.log (IsvalidStrongPassword ("Password12345")); // false (príliš dlhé)
Console.log (IsvalidStrongPassword ("Pass12")); // false (chýbajúce veľké písmená)
Console.log (IsvalidStrongPassword ("Password12")); // pravda
Console.log (IsvalidStrongPassword ("p12345678")); // false (chýbajúce malé písmená)
Console.log (IsvalidStrongPassword („heslo“)); // false (chýbajúce veľké písmená a číslo)
Console.log (IsvalidStrongPassword ("p@sSword12")); // false (špeciálny znak)
// demonštrovanie „hashing“ (iba veľmi neistý príklad)
const heslo ="mySecretPassword123";
const soľ =generovanie ();
const hashedpassword =hashpassword (heslo, soľ);
Console.log („HlorText Heslo:“, heslo);
Console.log ("Salt:", soľ);
Console.log ("Neisce \" hashed \ "heslo:", hashedpassword);
`` `
Kľúčové vylepšenia v „silnejšom“ príklade:
* silnejší regex:
* `(? =.* [A-Z])`:Pozitívne tvrdenie Lookahead, ktoré vyžaduje aspoň jedno malé písmeno.
* `(? =.* [A-Z])`:Pozitívne tvrdenie Lookahead, ktoré vyžaduje aspoň jedno veľké písmeno.
* `(? =.* \ d)`:Pozitívne vyhlásenie LOOKAHEAD, ktoré vyžaduje aspoň jednu číslicu.
* Varovanie na hashovanie klienta: Kód JavaScriptu obsahuje obrovské varovanie. * Nikdy* Vykonajte hashovanie hesla v JavaScripte na strane klienta v skutočnej aplikácii! Je to neodmysliteľne neisté, pretože kód je viditeľný pre používateľa a nemôže chrániť pred rôznymi útokmi. Funkcia „hashing“ je iba na demonštráciu * myšlienky * soli a hashovania; Nejde o bezpečnú implementáciu.
* Generovanie soli: Príklad vytvára základnú soľ. V skutočnom systéme by ste použili kryptograficky zabezpečené pseudo-náhodné generátor čísel (CSPRNG) na vytvorenie silnej, nepredvídateľnej soli.
V súhrne použite jednoduchšie regex na overenie dĺžky a alfanumerického znaku, ale vždy nezabudnite hash a soľ na strane servera pomocou kryptograficky bezpečnej metódy.