validacija lozinke / java programiranje

Uvod

Kada je reč o sajber bezbednosti, validacija lozinki je ključna za zaštitu korisničkih naloga. Upotreba regularnih izraza može biti iskorišćena kao jedan od načina provere primene određenih standarda za kompleksnost lozinke.

Kriterijumi za snažnu lozinku

U ovoj sekciji će se pojasniti šta to čini snažnu lozinku. Idealan password treba da ima neke od sledećih karakteristika:

  • Ima osam ili više karaktera
  • Uključuje veliko slovo
  • Koristi bar jedno malo slovo
  • Sadrži bar jednu cifru
  • Treba da ima jedan specijalni simbol (npr. @, #, $, %, itd.)
  • Ne sme da sadrži razmak, tabulator, itd.

Regularni izraz

Regularni izrazi se koriste za pretragu, pronalaženje i transformisanja teksta na osnovu određenih obrazaca. Regularni izraz koji zadovoljava kriterijume snažne logike bio bi.

^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@#$%^&+=!]).{8,25}$

 

Objašnjenje pojedinih delova:

  • ^: označava početak teksta
  • (?=.*[a-z]): osigurava da postoji bar jedno malo slovo
  • (?=.*[A-Z]): osigurava da postoji bar jedno veliko slovo
  • (?=.*\\d): osigurava da postoji bar jedna cifra
  • (?=.*[@#$%^&+=!]): osigurava da postoji bar jedan poseban simbol (@#$%^&+=!)
  • .{8,25}: osigurava da je minimalna dužinu 8 karaktera, a maksimalna 25 karaktera
  • $: označava kraj teksta

Implementacija u Javi

Na početku se definiše regularni izraz regExpn koji sadrži pomenuta pravila za lozinku. On se korisni kao polazna osnova za definisanje paterna Pattern, koji se u dobija kompajliranjem regularnog izraza korišćenjem metode Pattern.compile(). Verifikator podudaranja Matcher se kreira primenom matcher() metode paterna nad korisničkom šifrom koja se želi proveriti. Na kraju se poziva matches() kojom se proverava da li korisnička šifra zadovoljava regExpn regularni izraz.

String password = “Aa!45678”;

String regExpn = “^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=!])(?=\\S+$).{8,25}$”;

Pattern pattern = Pattern.compile(regExpn, Pattern.CASE_INSENSITIVE);

Matcher matcher = pattern.matcher(password);

boolean validation_result = matcher.matches();

System.out.println(“Is valid password? “ + (validation_result ? “Yes” : “No”));