L'aspect sécurité est quelque chose dont vous devez être particulièrement conscient lorsque vous créez une application Web. Les mots de passe doivent être traités avec prudence. Dans cet article, j'ai entendu dire qu'il était utile d'utiliser des expressions régulières lors de la définition de politiques de mot de passe, j'ai donc pris en compte les mots de passe et les expressions régulières.
** "Mini langage pour rechercher et remplacer efficacement des chaînes de caractères en spécifiant un modèle" **
Il paraît que. Jetons un coup d'œil à ce à quoi ressemblent les expressions régulières en utilisant le site Web Rubular, qui est un éditeur d'expressions régulières pour Ruby. Par exemple, il y a le texte suivant.
Temps d'étude du 30 août:1 heure
31 août, heure d'étude:3 heures
Temps d'étude du 1er septembre:2 heures
Temps d'étude du 2 septembre:4 heures
Temps d'étude du 3 septembre:6 heures
Temps d'étude du 4 septembre:10 heures
Parmi ceux-ci, seuls les nombres pour la période d'étude en septembre sont extraits à l'aide d'expressions régulières. Si vous utilisez une expression régulière, vous obtiendrez la chaîne de caractères suivante.
^ 9. *: (\ d *) heure $
Les caractères spéciaux utilisés dans les expressions régulières telles que ^ '',
.et
* '' sont appelés ** "méta caractères" **.
La signification des méta-caractères ici sera vérifiée plus tard dans Rubular.
Entrez le texte que vous souhaitez vérifier dans "Votre chaîne de test" de Rubular et l'expression régulière dans "Votre expression régulière".
Ensuite, le résultat sera le suivant.
La partie bleu clair de "Match result" est la partie trouvée par la recherche.
C'est la partie où "Match groups" a été capturé. Extrayez le temps d'apprentissage ici.
De cette façon, nous rechercherons des chaînes en utilisant des expressions régulières.
J'y ai fait référence → Liste des expressions régulières de base
Caractère méta | sens |
---|---|
^ | Représente le début d'une phrase |
$ | Représente la fin d'une phrase |
[] | Créez une classe de caractères qui représente un seul caractère |
- | []Indique la plage de caractères utilisée dans |
. | Représente n'importe quel caractère |
? | Le caractère ou le motif précédent apparaît une ou 0 fois |
* | Le caractère ou motif immédiatement précédent se poursuit 0 fois ou plus. Faites correspondre la partie la plus longue qui remplit les conditions |
*? | Le caractère ou motif immédiatement précédent se poursuit 0 fois ou plus. Faites correspondre la partie la plus courte qui remplit les conditions |
+ | Le caractère ou le motif immédiatement précédent continue au moins une fois. Faites correspondre la partie la plus longue qui remplit les conditions |
() | Capturer ou regrouper des chaînes correspondantes en interne |
{n,m} | Le caractère ou le motif précédent continue n fois ou plus et m fois ou moins |
|Échapper aux méta-caractères,\d et\Faites partie d'autres méta caractères tels que w | |
\d | Un nombre demi-largeur (0123456789) |
\w | Caractères alphanumériques demi-largeur et trait de soulignement'_' |
(?=x) | Représente la "position précédente" de x(Regard positif vers l'avenir) |
Alors que les performances des ordinateurs s'améliorent de jour en jour, le déchiffrement des mots de passe (par exemple, Round Attack % 81% 9F% E3% 82% 8A% E6% 94% BB% E6% 92% 83))) augmente d'année en année. En conséquence, les mots de passe doivent devenir plus complexes. Cabinet Cyber Security Center publié le 31 mars 2020 «Internet Safety and Security Handbook Ver.4.10» Selon P30 de, ** "10 chiffres ou plus avec lettres majuscules et minuscules + lettres minuscules + chiffres + symboles mélangés" ** est recommandé comme politique pour améliorer la sécurité des mots de passe. Ici, nous allons créer une politique de mot de passe selon le manuel avec des expressions régulières.
Ici, je voudrais examiner chaque expression régulière étape par étape.
** (1) Caractères alphanumériques demi-largeur de 10 chiffres à 40 chiffres symbole ** ** (2) Ajout de conditions de 1 ou plusieurs chiffres alphabétiques supérieurs + 1 ou plusieurs chiffres alphabétiques inférieurs ** ** (3) Ajout de conditions pour un ou plusieurs chiffres ** ** (4) Ajout de conditions pour un ou plusieurs chiffres **
Tous les motifs ne sont pas couverts, mais du haut
・ Caractères à 9 chiffres ・ Lettres minuscules à 10 chiffres ・ Lettres supérieures et inférieures à 10 chiffres ・ Alphabet supérieur à 10 chiffres + alphabet inférieur + numéro ・ Alphabet supérieur à 10 chiffres + alphabet inférieur + chiffre + symbole ・ Caractères à 41 chiffres
Je vérifierai avec le texte suivant.
Aaaaaaa1?
aaaaaaaaaa
Aaaaaaaaaa
Aaaaaaaaa1
Aaaaaaaa1?
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1?
Les caractères utilisés dans les expressions régulières peuvent être spécifiés à l'aide du code ASCII. Les symboles alphanumériques demi-largeur ici vont de ! '' À
~ '' dans la table de codes ASCII, ils sont donc les suivants.
Ruby
^[!-~]{10,40}$
Le résultat était comme prévu.
J'ai mis du temps à comprendre, mais je vais l'expliquer étape par étape.
** a. Utilisez une anticipation positive (? =) '' pour éliminer l'ordre des conditions ** ** b. Le caractère avant la condition est n'importe quel caractère
.avec la correspondance la plus courte 0 ou plusieurs consécutifs
*? '' **
** c. Définissez les conditions [A-Z] [a-z]
**
Référencé → [Expression régulière pour mot de passe / ^ (? =. *? [Az]) (? =. *? \ D) [az \ d] {8,100} $ / i est déchiffré](https: / /qiita.com/momotaro98/items/460c6cac14473765ec14)
Ruby
^(?=.*?[A-Z])(?=.*?[a-z])[!-~]{10,40}$
Réussi.
Ajout de la condition `` \ d '' pour les nombres 0-9 à (2).
Ruby
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)[!-~]{10,40}$
Réussi.
J'ai vérifié Code ASCII et spécifié le symbole. J'ai échappé à `` \ '' où les symboles et les méta caractères se chevauchent.
Ruby
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)(?=.*?[!-\/:-@\[-`{-~])[!-~]{10,40}$
Réussi. Ajout de texte pour la confirmation du symbole.
Les expressions régulières étaient difficiles à comprendre. Je vais l'utiliser de différentes manières autres que la définition de la politique de mot de passe.
Recommended Posts