Jeg undersøgte at finde et godt eksempel på en adgangskodestyringskontrol, der bruger JavaScript og Regelmæssige udtryk (Regex). I applikationen på mit arbejde sender vi et indlæg tilbage for at bekræfte adgangskodestyrken, og det er ret ubelejligt for vores brugere.
Hvad er Regex?
Et regulært udtryk er en sekvens af tegn, der definerer et søgemønster. Normalt bruges sådanne mønstre af strengesøgningsalgoritmer til find or find og udskift operationer på strenge eller til validering af input.
Denne artikel skal bestemt ikke lære dig regelmæssige udtryk. Bare ved, at evnen til at bruge Regular Expressions absolut vil forenkle din udvikling, når du søger efter mønstre i tekst. Det er også vigtigt at bemærke, at de fleste udviklingssprog har optimeret brugen af regelmæssigt udtryk ... så i stedet for at analysere og søge strenge trin for trin er Regex typisk meget hurtigere både server og klientside.
Jeg søgte ganske lidt på nettet, inden jeg fandt det et eksempel af nogle gode regulære udtryk, der ser efter en kombination af længde, tegn og symboler. Koden var dog lidt overdreven efter min smag og skræddersyet til .NET. Så jeg forenklede koden og satte den i JavaScript. Dette gør det validere adgangskodestyrken i realtid i klientens browser, inden den sendes tilbage ... og giver feedback til brugeren om adgangskodens styrke.
Skriv et kodeord
For hvert slag på tastaturet testes adgangskoden mod det regulære udtryk, og der gives feedback til brugeren i et interval under det.
Indtast adgangskode
Her er koden
Regelmæssige udtryk gør et fantastisk stykke arbejde med at minimere længden af koden:
- Flere tegn - Hvis længden er under 8 tegn.
- Svag - Hvis længden er mindre end 10 tegn og ikke indeholder en kombination af symboler, store bogstaver, tekst.
- Medium - Hvis længden er 10 tegn eller mere og har en kombination af symboler, store bogstaver, tekst.
- Stærk - Hvis længden er 14 tegn eller mere og har en kombination af symboler, store bogstaver, tekst.
<script language="javascript">
function passwordChanged() {
var strength = document.getElementById('strength');
var strongRegex = new RegExp("^(?=.{14,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
var mediumRegex = new RegExp("^(?=.{10,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{8,}).*", "g");
var pwd = document.getElementById("password");
if (pwd.value.length == 0) {
strength.innerHTML = 'Type Password';
} else if (false == enoughRegex.test(pwd.value)) {
strength.innerHTML = 'More Characters';
} else if (strongRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:green">Strong!</span>';
} else if (mediumRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:orange">Medium!</span>';
} else {
strength.innerHTML = '<span style="color:red">Weak!</span>';
}
}
</script>
<input name="password" id="password" type="text" size="15" maxlength="100" onkeyup="return passwordChanged();" />
<span id="strength">Type Password</span>
Hærdning af din adgangskodeanmodning
Det er vigtigt, at du ikke bare validerer adgangskodekonstruktionen i dit Javascript. Dette vil gøre det muligt for alle med browserudviklingsværktøjer at omgå scriptet og bruge den adgangskode, de gerne vil have. Du skal ALTID bruge en kontrol på serversiden til at validere adgangskodestyrken, før du gemmer den på din platform.
Jeg fandt en anden adgangskontrolstyrke. Deres algoritme er baseret på ordordbogen. Prøv en på microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx og en på itsimpl.com - http://www.itsimpl.com
TAK SKAL DU HAVE! TAK SKAL DU HAVE! TAK SKAL DU HAVE! Jeg har narre i 2 uger med en forbandet adgangskodestyrke kode fra andre hjemmesider og trukket mit hår ud. Din er kort, fungerer ligesom jeg vil og bedst af alt, let for en javascript-novice at ændre! Jeg ønskede at fange styrkedommen og ikke lade formularen poste for faktisk at opdatere brugerens adgangskode, medmindre den opfyldte styrketesten. Andres kode var for kompliceret eller fungerede ikke rigtigt eller noget andet. Jeg elsker dig! XXXXX
Selv tak! Selv tak! Selv tak!
Jeg elsker også dig!
gudskelov for folk, der faktisk kan skrive et stykke kode ordentligt.
Havde den samme erfaring som Janis.
Dette fungerer lige ud af kassen, hvilket er perfekt til folk som mig, der ikke kan kode javascript!
Tak fordi du skrev et stykke kode, der gør nøjagtigt det, der står på dåsen!
Hej, først og fremmest tak for din indsats, jeg prøvede at bruge dette med Asp.net, men fungerede ikke, jeg bruger det
i stedet for tag, og det virkede ikke, nogen forslag ?!
Til Nisreen: koden i det fremhævede felt fungerer ikke med en cut'n'paste. Det eneste tilbud er ødelagt. Demonstrationslinkets kode er dog fint.
Hej, jeg kan godt lide dit script! Jeg oversatte det til hollandsk, og jeg sendte det på mit forum her!
godt arbejde! præcis hvordan det skal gøres på klienten
meget flot job….
Tak Douglas, jeg bruger det til mit nuværende job.
“P @ s $ w0rD” vises ved stærk, selvom det ville blive revnet ret hurtigt med et ordbogsangreb ...
For at implementere en sådan funktion på en professionel løsning, mener jeg, det er vigtigt at kombinere denne algoritme med en ordbogscheck.
Fungerer godt i XULRunner med lidt ændring rundt. Tak!
Tak for denne lille kode, jeg kan nu bruge den til at teste min adgangskodestyrke, når mine besøgende. Indtaster deres adgangskoder,
Fantastisk stykke kodning
Manuskriptet var super. Jeg havde brugt i vores nuværende projekt
Tak for deling!
Så simpelt og fantastisk udtryk. Jeg som tester afledte mine TC'er fra dette udtryk.
Tak fordi du delte. Du har et par ødelagte links på denne side. FYI.
kan nogen fortælle, hvorfor det ikke fungerede mit ..
Jeg kopierede al koden og indsatte den i notesblok ++, men den virker slet ikke?
Vær venlig at hjælpe mig..
Fantastisk!!!!! Tak skal du have.
Fantastisk job fyr! Enkel og effektiv. Mange tak for delingen!
tak
Godt, thx. Men ... Hvad er et eksempel på en STÆRK pw? 'kan ikke finde en! - {}
Denne type "styrketjekker" fører folk ned ad en meget farlig sti. Det værdsætter karakterdiversitet over adgangssætlængde, hvilket får den til at bedømme kortere, mere forskellige adgangskoder som stærkere end længere, mindre forskellige adgangskoder. Det er en fejlslutning, der får dine brugere i problemer, hvis de nogensinde står over for en alvorlig hackingtrussel.
Jeg er ikke uenig, Jordan! Eksemplet blev simpelthen sat ud som et eksempel på manuskriptet. Min anbefaling til folk er at bruge et adgangskodestyringsværktøj til at oprette uafhængige adgangssætninger til ethvert websted, der er unikt for det. Tak!
tak, det fungerer godt.
Tak u det fungerer fint
jeg sætter stor pris på, at du er søgt dette mange gange, men til sidst fik jeg dit indlæg og er virkelig forbløffet. TAK SKAL DU HAVE
Tak ven. Lige implementeret på min hjemmeside, og det fungerer meget godt.
Elsker at høre det! Du er meget velkommen!
Jeg sætter pris på at du deler! Har ledt efter at øge adgangskodestyrken på vores hjemmeside, og denne fungerede som jeg ønskede. Mange tak!
Tak, håber du er i stand til at tilpasse det efter behov.
Du er en live sparer! Jeg analyserede strenge til højre og i midten og troede, at der er en bedre måde, og fandt dit stykke kode ved hjælp af Regex. Var i stand til at rode med det til min side ... Du har ingen idé om, hvor meget dette hjalp. Tak så meget Douglas !!
Godt at høre!