Tarkista salasanan vahvuus JavaScriptillä tai jQuerylla ja säännöllisillä lausekkeilla (myös palvelinpuolen esimerkeillä!)
Tein tutkimusta löytääksesi hyvän esimerkin salasanan vahvuuden tarkistimesta, joka käyttää JavaScript ja Säännölliset lausekkeet (regex). Työssäni sovelluksessa teemme takaisin postauksen varmistaaksemme salasanan vahvuuden ja se on melko hankalaa käyttäjillemme.
Mikä on Regex?
Säännöllinen lauseke on merkkijono, joka määrittää hakumallin. Yleensä tällaisia malleja käytetään merkkijonohakualgoritmeilla löytää or Etsi ja korvaa merkkijonotoiminnot tai syötteen vahvistus.
Tämä artikkeli ei todellakaan ole opettaa sinulle säännöllisiä ilmauksia. Tiedä vain, että kyky käyttää säännöllisiä lausekkeita yksinkertaistaa kehitystäsi, kun etsit kuvioita tekstistä. On myös tärkeää huomata, että useimmat kehityskielet ovat optimoineet säännöllisen lausekkeen käytön… joten Regex on tyypillisesti paljon nopeampi sekä palvelin- että asiakaspuolella sen sijaan, että jäsennettäisiin ja etsitään merkkijonoja vaihe vaiheelta.
Etsin verkosta melko vähän ennen kuin löysin esimerkki joistakin hienoista säännöllisistä lausekkeista, jotka etsivät pituuden, merkkien ja symbolien yhdistelmää. Koodi oli kuitenkin hieman liiallinen minun makuuni ja räätälöity .NETille. Joten yksinkertaistin koodia ja laitoin sen JavaScriptiin. Tämän ansiosta se vahvistaa salasanan vahvuuden reaaliajassa asiakkaan selaimessa ennen sen lähettämistä takaisin… ja antaa käyttäjälle palautetta salasanan vahvuudesta.
Kirjoita salasana
Jokaisella näppäimistön painalluksella salasana testataan säännöllisen lausekkeen suhteen, ja sitten palautetta annetaan käyttäjälle sen alapuolella.
JavaScript-salasanan vahvuustoiminto
- Säännölliset lausekkeet tehdä fantastista työtä koodin pituuden minimoimiseksi. Tämä JavaScript-toiminto tarkistaa salasanan vahvuuden ja sen, onko sen salaaminen helppoa, keskitasoa, vaikeaa vai erittäin vaikea arvata. Kun henkilö kirjoittaa, se näyttää vinkkejä sen rohkaisemiseksi olemaan vahvempi. Se vahvistaa salasanan seuraavien perusteella:
- Pituus – Jos pituus on alle tai yli 8 merkkiä.
- Mixed Case – Jos salasanassa on sekä isoja että pieniä kirjaimia.
- Numerot – Jos salasana sisältää numeroita.
- Erikoismerkit – Jos salasana sisältää erikoismerkkejä.
Toiminto näyttää vaikeuden sekä vinkkejä salasanan edelleen kovettamiseksi.
function checkPasswordStrength(password) {
// Initialize variables
var strength = 0;
var tips = "";
// Check password length
if (password.length < 8) {
tips += "Make the password longer. ";
} else {
strength += 1;
}
// Check for mixed case
if (password.match(/[a-z]/) && password.match(/[A-Z]/)) {
strength += 1;
} else {
tips += "Use both lowercase and uppercase letters. ";
}
// Check for numbers
if (password.match(/\d/)) {
strength += 1;
} else {
tips += "Include at least one number. ";
}
// Check for special characters
if (password.match(/[^a-zA-Z\d]/)) {
strength += 1;
} else {
tips += "Include at least one special character. ";
}
// Return results
if (strength < 2) {
return "Easy to guess. " + tips;
} else if (strength === 2) {
return "Medium difficulty. " + tips;
} else if (strength === 3) {
return "Difficult. " + tips;
} else {
return "Extremely difficult. " + tips;
}
}
Jos haluat päivittää kärjen värin, voit tehdä sen myös päivittämällä koodin jälkeen // Return results
linja.
// Get the paragraph element
var strengthElement = document.getElementById("passwordStrength");
// Return results
if (strength < 2) {
strengthElement.textContent = "Easy to guess. " + tips;
strengthElement.style.color = "red";
} else if (strength === 2) {
strengthElement.textContent = "Medium difficulty. " + tips;
strengthElement.style.color = "orange";
} else if (strength === 3) {
strengthElement.textContent = "Difficult. " + tips;
strengthElement.style.color = "black";
} else {
strengthElement.textContent = "Extremely difficult. " + tips;
strengthElement.style.color = "green";
}
jQueryn salasanan vahvuustoiminto
jQuerylla meidän ei itse asiassa tarvitse kirjoittaa lomaketta oninput-päivityksellä:
<form>
<label for="password">Enter password:</label>
<input type="password" id="password">
<p id="password-strength"></p>
</form>
Voimme myös halutessasi muokata viestien väriä.
$(document).ready(function() {
$('#password').on('input', function() {
var password = $(this).val();
var strength = 0;
var tips = "";
// Check password length
if (password.length < 8) {
tips += "Make the password longer. ";
} else {
strength += 1;
}
// Check for mixed case
if (password.match(/[a-z]/) && password.match(/[A-Z]/)) {
strength += 1;
} else {
tips += "Use both lowercase and uppercase letters. ";
}
// Check for numbers
if (password.match(/\d/)) {
strength += 1;
} else {
tips += "Include at least one number. ";
}
// Check for special characters
if (password.match(/[^a-zA-Z\d]/)) {
strength += 1;
} else {
tips += "Include at least one special character. ";
}
// Update the text and color based on the password strength
var passwordStrengthElement = $('#password-strength');
if (strength < 2) {
passwordStrengthElement.text("Easy to guess. " + tips);
passwordStrengthElement.css('color', 'red');
} else if (strength === 2) {
passwordStrengthElement.text("Medium difficulty. " + tips);
passwordStrengthElement.css('color', 'orange');
} else if (strength === 3) {
passwordStrengthElement.text("Difficult. " + tips);
passwordStrengthElement.css('color', 'black');
} else {
passwordStrengthElement.text("Extremely difficult. " + tips);
passwordStrengthElement.css('color', 'green');
}
});
});
Paranna salasanapyyntöäsi
On tärkeää, että et vain vahvista salasanan rakennetta JavaScriptissäsi. Tämä antaisi kaikille selaimen kehitystyökaluja käyttäville mahdollisuuden ohittaa komentosarjan ja käyttää haluamaansa salasanaa. Sinun tulee AINA käyttää palvelinpuolen tarkistusta salasanan vahvuuden vahvistamiseen ennen sen tallentamista alustallesi.
PHP-toiminto salasanan vahvuutta varten
function checkPasswordStrength($password) {
// Initialize variables
$strength = 0;
// Check password length
if (strlen($password) < 8) {
return "Easy to guess";
} else {
$strength += 1;
}
// Check for mixed case
if (preg_match("/[a-z]/", $password) && preg_match("/[A-Z]/", $password)) {
$strength += 1;
}
// Check for numbers
if (preg_match("/\d/", $password)) {
$strength += 1;
}
// Check for special characters
if (preg_match("/[^a-zA-Z\d]/", $password)) {
$strength += 1;
}
// Return strength level
if ($strength < 2) {
return "Easy to guess";
} else if ($strength === 2) {
return "Medium difficulty";
} else if ($strength === 3) {
return "Difficult";
} else {
return "Extremely difficult";
}
}
Python-funktio salasanan vahvuutta varten
def check_password_strength(password):
# Initialize variables
strength = 0
# Check password length
if len(password) < 8:
return "Easy to guess"
else:
strength += 1
# Check for mixed case
if any(char.islower() for char in password) and any(char.isupper() for char in password):
strength += 1
# Check for numbers
if any(char.isdigit() for char in password):
strength += 1
# Check for special characters
if any(not char.isalnum() for char in password):
strength += 1
# Return strength level
if strength < 2:
return "Easy to guess"
elif strength == 2:
return "Medium difficulty"
elif strength == 3:
return "Difficult"
else:
return "Extremely difficult"
C#-toiminto salasanan vahvuutta varten
public string CheckPasswordStrength(string password) {
// Initialize variables
int strength = 0;
// Check password length
if (password.Length < 8) {
return "Easy to guess";
} else {
strength += 1;
}
// Check for mixed case
if (password.Any(char.IsLower) && password.Any(char.IsUpper)) {
strength += 1;
}
// Check for numbers
if (password.Any(char.IsDigit)) {
strength += 1;
}
// Check for special characters
if (password.Any(ch => !char.IsLetterOrDigit(ch))) {
strength += 1;
}
// Return strength level
if (strength < 2) {
return "Easy to guess";
} else if (strength == 2) {
return "Medium difficulty";
} else if (strength == 3) {
return "Difficult";
} else {
return "Extremely difficult";
}
}
Java-toiminto salasanan vahvuutta varten
public String checkPasswordStrength(String password) {
// Initialize variables
int strength = 0;
// Check password length
if (password.length() < 8) {
return "Easy to guess";
} else {
strength += 1;
}
// Check for mixed case
if (password.matches(".*[a-z].*") && password.matches(".*[A-Z].*")) {
strength += 1;
}
// Check for numbers
if (password.matches(".*\\d.*")) {
strength += 1;
}
// Check for special characters
if (password.matches(".*[^a-zA-Z\\d].*")) {
strength += 1;
}
// Return strength level
if (strength < 2) {
return "Easy to guess";
} else if (strength == 2) {
return "Medium difficulty";
} else if (strength == 3) {
return "Difficult";
} else {
return "Extremely difficult";
}
}
Ja jos etsit vain loistavaa salasanageneraattoria, olen rakentanut sitä varten mukavan pienen verkkotyökalun.