xom`s pinion - xomův blog

Blog šťastného středoevropana plný subjektivních blábolů.

Dejchá, furt dejchá!
Oslavy Slovanu
úvod » JavaScript: Měření síly hesla

JavaScript: Měření síly hesla

JavaScript V jednom z předchozích článků jsem hovořil o registračních formulářích, tam jsem se také zmínil o vhodném doplňku, který by měřil sílu hesla. Uživatelé jsou většinou při volbě hesla inspirováni těmi nejsnáze odhadnutelnými pohnutkami, tudíž je jejich volba prolomitelná. Uživatel třeba tuší, že jeho heslo není zrovna nejbezpečnější, ale nemusí vědět, jak docílit toho, aby vymyslel heslo silnější. Na řadu může přijít programátor a pomoci mu javascript ukazatelem síly hesla. V zásadě jde o velice jednoduchý skript, který popíši v druhé polovině článku, v té první se zaměřím na definici silného hesla.

Obecně lze říci, že jakékoliv heslo, které je shodné s přihlašovacím jménem, je při znalosti toho přihlašovacího řetězce velice slabé a to může klidně splňovat všech 5 následujících jednoduše měřitelných bodů pro tvorbu kvalitního hesla.

Rozšíření znakové sady, ze které čerpáte symboly do svého hesla, nemá pozitivní vliv jenom na útok provedený hrubou silou (ten by se stejně díky vytížení serveru velice rychle objevil), ale hlavně na možnost tvorby zcela unikátního řetězce, který se nebude nacházet v nějaké databázi používaných hesel. Zároveň s komplikovaností hesla roste jeho míra nezapamatovatelnosti náhodným čumilem či posluchačem (i když moc dobře víme, že se heslo neříká!)

Skript pro vaše formuláře

5 zmíněných bodů vezmu jako klíčová a splnění každého bodu přidám uživateli bod, takže heslo bude moci dostat 0 až 5 bodů. Do pole s heslem přidám akci onkeyup a při každém upraveném znaku řetězec validuji funkcí passwordStrength. Funkce je velice jednoduchá, obsahuje 5 regulárních výrazů definici pro grafické znázornění síly hesla.

function passwordStrength (password) { var point = 24; var score = 0; if ( password.length > 6) score++; if ( ( password.match(/[a-z]/) ) && ( password.match(/[A-Z]/) ) ) score++; if ( password.match(/\d+/)) score++; if ( password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/) ) score++; if ( password.length > 12) score++; var box = document.getElementById("passwordStrength").getElementsByTagName("DIV"); box[0].style.left = ( point * score ) + "px"; }

V příkladu na externí stránce je ve zdrojový kód doplněn o komentáře u jednotlivých řádků k lepší orientaci.

Aktivní ukázka

Heslo:

V ukázce byl použit obrázek: http://pinion.xom-tom.com/images/pass.jpg (jednoduchý přechod z červené do zelené)

Skriptem ukazujícím sílu hesla uživateli pomáháme tvořit kvalitní heslo. Otázkou je zda-li stejné heslo nebude používat na svých dalších 20 stránkách, kde je registrován, zda-li ho nebude volat manželce z autobusu, zda-li si ho nebude lepit v práci na monitor atd.

Identita je na internetu stále choulostivá záležitost, pokud si i vy chce zachovat svou identitu, tak používejte mozek a většině problémů s ukradením virtuální podoby se vyhnete, to je i má rada vašim uživatelům. Škoda jen, že si ve větší míře půjdou běžní uživatelé vždy svou cestou a pojmy jako silné heslo pro ně budou obtěžující.

z kategorie Web design, přidej na Linkuj.cz, publikováno 29.02.2008 03:53

Komentáře k článku (3×)

01| želvák (01.03.2008 00:33) | reakce

GRavatar

velmi zajímavé informace, díky za to

02| Mautinek (08.03.2008 14:01) | reakce

GRavatar

Díky za článek, určitě se to bude někdy hodit.

03| alian (12.03.2008 09:14) | reakce

GRavatar

hodne pekne a prakticke, dakujem ;)

Komentáře byly pozastaveny
© 2004-2008 Tom Hnatovsky - Všechna práva vyhrazena
TOPlist