^(e =.*[a-za-z]) (e =.*\ d) (? =.
`` `
Επεξήγηση:
* `^`:Ταιριάζει με την αρχή της συμβολοσειράς.
* `(? =.* [a-za-z])`:θετικός ισχυρισμός lookahead που απαιτεί τουλάχιστον ένα γράμμα (a-z ή a-z).
* `(? =.* \ d)`:θετικός ισχυρισμός lookahead που απαιτεί τουλάχιστον ένα ψηφίο (0-9).
*`(? =.*[!@#$%^&*(),. Αποδράστε ειδικούς χαρακτήρες στην τάξη χαρακτήρων (π.χ., `\` και `-').
* `{8,}`:ταιριάζει με οποιοδήποτε χαρακτήρα (εκτός από τη Newline) τουλάχιστον 8 φορές. Αυτό εξασφαλίζει το ελάχιστο μήκος.
* `$`:Ταιριάζει με το τέλος της συμβολοσειράς.
Πώς να το χρησιμοποιήσετε σε διαφορετικά πλαίσια:
* javascript:
`` `javascript
Const PasswordRegex =/^(?=.* στρέβλωσης+za-z)(??=.** )(??=.**
const password ="myp@ssword123";
const isValid =passwordRegex.test (κωδικός πρόσβασης);
console.log (isValid); // έξοδος:αλήθεια
const invalidpassword ="short1!";
const isInValid =passwordRegex.test (envalidpassword);
console.log (isInvalid); // έξοδος:FALSE
`` `
* Python:
`` `Python
εισαγωγή
password_regex =r "^(? =.*[a-za-z]) (? =.*\ d) (? =.
κωδικός πρόσβασης ="myp@ssword123"
is_valid =re.match (password_regex, κωδικός πρόσβασης)
εκτύπωση (bool (is_valid)) # έξοδος:true
INVALID_PASSWORD ="Short1!"
is_invalid =re.match (password_regex, invalid_password)
εκτύπωση (bool (is_invalid)) # έξοδος:false
`` `
* java:
`` `java
Εισαγωγή java.util.regex.matcher;
Εισαγωγή java.util.regex.pattern;
δημόσια τάξη passwordValidator {
δημόσιο στατικό κενό κύριο (String [] args) {
(A-za-z]) (? =.
Password String ="myp@ssword123";
Μοτίβο μοτίβο =pattern.compile (passwordRegex);
Matcher matcher =pattern.matcher (κωδικός πρόσβασης);
System.out.println (matcher.matches ()); // έξοδος:αλήθεια
String invalidpassword ="short1!";
matcher =pattern.matcher (envalidpassword);
System.out.println (matcher.matches ()); // έξοδος:FALSE
}
}
`` `
Σημαντικές εκτιμήσεις και προσαρμογή:
* Ειδικοί χαρακτήρες: Το πιο κρίσιμο μέρος είναι ο καθορισμός των επιτρεπόμενων ειδικών χαρακτήρων. Το μέρος του regex ορίζει τους χαρακτήρες που θεωρούνται "ειδικοί".
* σύνολα χαρακτήρων:
* `[a-za-z]`:ταιριάζει με οποιαδήποτε κεφαλαία ή πεζά γράμματα. Ίσως θελήσετε να περιορίσετε αυτό μόνο σε πεζά ή μόνο κεφαλαία γράμματα, αν χρειαστεί.
* `\ d`:ταιριάζει με οποιοδήποτε ψηφίο (0-9).
* Ελάχιστο μήκος: Το μέρος `{8,}` καθορίζει ένα ελάχιστο μήκος 8 χαρακτήρων. Αλλάξτε το `8` για να ρυθμίσετε το ελάχιστο μήκος. Εάν θέλετε επίσης ένα μέγιστο μήκος, μπορείτε να το καθορίσετε σαν αυτό:`{8,16}` για τουλάχιστον 8 και μέγιστο 16 χαρακτήρες.
* Απαιτήσεις πολυπλοκότητας: Μπορείτε να προσθέσετε περισσότερες απαιτήσεις πολυπλοκότητας προσθέτοντας περισσότερους ισχυρισμούς. Για παράδειγμα, θα μπορούσατε να απαιτήσετε τουλάχιστον δύο ψηφία με `(? =.*\ D.*? \ D)`.
* Βέλτιστες πρακτικές ασφαλείας: Ενώ αυτό το regex επιβάλλει ένα βασικό επίπεδο πολυπλοκότητας, είναι σημαντικό να κατανοήσουμε ότι μόνο το regex δεν είναι μια πλήρης λύση ασφαλείας. Εξετάστε αυτές τις βέλτιστες πρακτικές:
* αλάτι και hash: Ποτέ μην αποθηκεύετε κωδικούς πρόσβασης σε απλό κείμενο. Χρησιμοποιείτε πάντα έναν ισχυρό αλγόριθμο κατακερματισμού (όπως το Argon2, το BCrypt ή το Scrypt) με ένα μοναδικό αλάτι για κάθε κωδικό πρόσβασης.
* μετρητές αντοχής κωδικού πρόσβασης: Χρησιμοποιήστε ένα μετρητή ισχύος κωδικού πρόσβασης για να παρέχετε ανατροφοδότηση σε πραγματικό χρόνο στους χρήστες καθώς πληκτρολογούν τον κωδικό πρόσβασής τους.
* Τακτικοί έλεγχοι ασφαλείας: Ελέγξτε τακτικά τις πολιτικές κωδικού πρόσβασης και τις πρακτικές ασφαλείας.
* Περιορισμός ρυθμού: Εφαρμογή του περιορισμού των επιτοκίων στις προσπάθειες σύνδεσης για την πρόληψη επιθέσεων βίαιης δύναμης.
Παράδειγμα:επιτρέποντας μόνο τους ακόλουθους ειδικούς χαρακτήρες:`!@#$%^&*`
Το regex θα γίνει:
`` regex
^(e =.*[a-za-z]) (? =.*\ d)
`` `
Παράδειγμα:Απαιτώντας τουλάχιστον δύο ψηφία:
`` regex
^(e =.*[a-za-z]) (e =.*\ d.*\ d)
`` `
Αυτή η έκδοση προσθέτει «(? =.
Επιλέξτε το regex που ταιριάζει καλύτερα * την * συγκεκριμένη πολιτική κωδικού πρόσβασης και θυμηθείτε να δώσετε προτεραιότητα στις βέλτιστες πρακτικές ασφαλείας. Πάντα να δοκιμάζετε το regex διεξοδικά με μια ποικιλία από έγκυρους και μη έγκυρους κωδικούς πρόσβασης.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα