[RAILS] [Ruby] Expression régulière pour le paramètre de stratégie de mot de passe sécurisé

1.Tout d'abord

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.

2. Qu'est-ce qu'une expression régulière?

Les débutants sont les bienvenus! Introduction aux expressions régulières qui peuvent être apprises à la main et avec les yeux, partie 1 "Cherchons des numéros de téléphone dans différents formats"

** "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. スクリーンショット 2020-09-23 10.41.33.png 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.

3. Méta-caractères d'expression régulière utilisés dans cet article

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)

4. Quel type de politique de mot de passe dois-je définir?

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.

5. Expressions régulières pour les paramètres de stratégie de mot de passe

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?

(1) Caractères alphanumériques demi-largeur de 10 à 40 chiffres symbole

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. スクリーンショット 2020-09-23 23.43.47.png

(2) Ajout de conditions de 1 ou plusieurs chiffres anglais supérieurs + 1 ou plusieurs lettres anglaises inférieures

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.

スクリーンショット 2020-09-24 0.26.35.png

(3) Ajout de conditions pour un ou plusieurs chiffres

Ajout de la condition `` \ d '' pour les nombres 0-9 à (2).

Ruby


^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)[!-~]{10,40}$

Réussi.

スクリーンショット 2020-09-24 0.31.15.png

(4) Symbole Ajouter une condition de 1 chiffre ou plus

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.

スクリーンショット 2020-09-24 0.49.20.png

6. Résumé

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

[Ruby] Expression régulière pour le paramètre de stratégie de mot de passe sécurisé
Expression régulière pour le mot de passe
Expression régulière Ruby
Paramètre Ruby 2
Masquez le mot de passe de l'ID utilisateur / mot de passe délimité par une expression canonique
Rubis paramètre 3 Rubocop
Bases des expressions régulières
Expression régulière JS
Expression régulière Ruby Extrait d'une chaîne de caractères spécifique vers une chaîne de caractères