[RAILS] [Ruby] Regulärer Ausdruck für die Einstellung sicherer Kennwortrichtlinien

1. Zuallererst

Der Sicherheitsaspekt sollte beim Erstellen einer Webanwendung besonders beachtet werden. Passwörter müssen mit Vorsicht behandelt werden. In diesem Artikel habe ich gehört, dass es nützlich ist, beim Festlegen von Kennwortrichtlinien reguläre Ausdrücke zu verwenden. Daher habe ich Kennwörter und reguläre Ausdrücke berücksichtigt.

2. Was ist ein regulärer Ausdruck?

Anfänger willkommen! Einführung in reguläre Ausdrücke, die von Hand und mit den Augen erlernt werden können, Teil 1 "Suche nach Telefonnummern in verschiedenen Formaten"

** "Mini-Sprache zum effizienten Suchen und Ersetzen von Zeichenketten durch Angabe eines Musters" **

Es scheint, dass. Schauen wir uns an, wie reguläre Ausdrücke auf der Website Rubular aussehen, die ein Editor für reguläre Ausdrücke für Ruby ist. Zum Beispiel gibt es den folgenden Text.

30. August Lernzeit:1 Stunde
31. August Studienzeit:3 Stunden
1. September Studienzeit:2 Stunden
2. September Lernzeit:4 Stunden
3. September Lernzeit:6 Stunden
4. September Lernzeit:10 Stunden

Von diesen werden nur die Zahlen für die Studienzeit im September mit regulären Ausdrücken extrahiert. Wenn Sie einen regulären Ausdruck verwenden, erhalten Sie die folgende Zeichenfolge.

^ 9. *: (\ d *) Zeit $

Sonderzeichen, die in regulären Ausdrücken wie ^, . und * verwendet werden, werden als ** "Metazeichen" ** bezeichnet. Die Bedeutung von Metazeichen wird später in Rubular überprüft. Geben Sie den zu überprüfenden Text in Rubulars "Ihre Testzeichenfolge" und den regulären Ausdruck in "Ihr regulärer Ausdruck" ein. Dann ist das Ergebnis wie folgt. スクリーンショット 2020-09-23 10.41.33.png Der hellblaue Teil von "Übereinstimmungsergebnis" ist der Teil, der durch Suchen gefunden wurde. Dies ist der Teil, in dem "Übereinstimmungsgruppen" erfasst wurden. Extrahieren Sie hier die Lernzeit. Auf diese Weise suchen wir mit regulären Ausdrücken nach Zeichenfolgen.

3. In diesem Artikel verwendete Metazeichen für reguläre Ausdrücke

Ich habe darauf verwiesen → Liste der regulären Grundausdrücke

Meta-Charakter Bedeutung
^ Stellt den Anfang eines Satzes dar
$ Stellt das Ende eines Satzes dar
[] Erstellen Sie eine Zeichenklasse, die ein beliebiges Zeichen darstellt
- []Gibt den Bereich der darin verwendeten Zeichen an
. Repräsentiert ein beliebiges Zeichen
? Das vorherige Zeichen oder Muster wird einmal oder 0 Mal angezeigt
* Das unmittelbar vorhergehende Zeichen oder Muster wird 0 oder mehrmals fortgesetzt. Passen Sie den längsten Teil an, der die Bedingungen erfüllt
*? Das unmittelbar vorhergehende Zeichen oder Muster wird 0 oder mehrmals fortgesetzt. Passen Sie den kürzesten Teil an, der die Bedingungen erfüllt
+ Das unmittelbar vorhergehende Zeichen oder Muster wird mindestens einmal fortgesetzt. Passen Sie den längsten Teil an, der die Bedingungen erfüllt
() Erfassen oder gruppieren Sie intern übereinstimmende Zeichenfolgen
{n,m} Das vorherige Zeichen oder Muster wird n-mal oder mehr und m-mal oder weniger fortgesetzt
|Escape Meta Zeichen,\d und\Seien Sie Teil anderer Meta-Zeichen wie w
\d Eine Nummer mit halber Breite (0123456789))
\w Alphanumerische Zeichen halber Breite und Unterstrich'_'
(?=x) Repräsentiert die "vorherige Position" von x(Positiver Ausblick)

4. Welche Art von Passwortrichtlinie sollte ich festlegen?

Da sich die Computerleistung von Tag zu Tag verbessert, wird das Kennwort entschlüsselt (z. B. Round Attack. % 81% 9F% E3% 82% 8A% E6% 94% BB% E6% 92% 83))) nimmt von Jahr zu Jahr zu. Passwörter müssen daher komplexer werden. Cabinet Cyber Security Center, herausgegeben am 31. März 2020 "Internet Safety and Security Handbook Ver.4.10" Gemäß P30 von ** "10 Ziffern oder mehr mit Ober- und Unterbuchstaben + Unterbuchstaben + Zahlen + gemischten Symbolen" ** wird als Richtlinie zur Verbesserung der Sicherheit von Passwörtern empfohlen. Hier erstellen wir eine Kennwortrichtlinie gemäß dem Handbuch mit regulären Ausdrücken.

5. Reguläre Ausdrücke für Kennwortrichtlinieneinstellungen

Hier möchte ich jeden regulären Ausdruck Schritt für Schritt betrachten.

** (1) Alphanumerische Zeichen mit halber Breite von 10 bis 40 Stellen Symbol ** ** (2) Hinzufügen von Bedingungen mit 1 oder mehr oberen alphabetischen Ziffern + 1 oder mehr unteren alphabetischen Ziffern ** ** (3) Hinzufügen von Bedingungen für eine oder mehrere Ziffern ** ** (4) Hinzufügen von Bedingungen für eine oder mehrere Ziffern **

Nicht alle Muster werden abgedeckt, sondern von oben

・ 9-stellige Zeichen ・ 10-stellige Kleinbuchstaben ・ 10-stellige Ober- und Unterbuchstaben ・ 10-stelliges oberes Alphabet + unteres Alphabet + Nummer ・ 10-stelliges oberes Alphabet + unteres Alphabet + Nummer + Symbol ・ 41-stellige Zeichen

Ich werde mit dem folgenden Text überprüfen.

Aaaaaaa1?
aaaaaaaaaa
Aaaaaaaaaa
Aaaaaaaaa1
Aaaaaaaa1?
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1?

(1) Alphanumerische Zeichen halber Breite mit 10 bis 40 Ziffern Symbol

In regulären Ausdrücken verwendete Zeichen können mit [ASCII-Code] angegeben werden (https://www.k-cube.co.jp/wakaba/server/ascii_code.html). Die alphanumerischen Symbole mit halber Breite sind in der ASCII-Codetabelle von ! Bis ~, also wie folgt.

Ruby


^[!-~]{10,40}$

Das Ergebnis war wie erwartet. スクリーンショット 2020-09-23 23.43.47.png

(2) Hinzufügen von Bedingungen von 1 oder mehr oberen alphabetischen Ziffern + 1 oder mehr unteren alphabetischen Ziffern

Ich habe eine Weile gebraucht, um zu verstehen, aber ich werde es Schritt für Schritt erklären.

** a. Verwenden Sie eine positive Vorausschau (? =), um die Reihenfolge der Bedingungen zu beseitigen ** ** b. Das Zeichen vor der Bedingung ist ein beliebiges Zeichen . mit der kürzesten Übereinstimmung 0 oder mehr aufeinanderfolgenden *? ** ** c. Bedingungen einstellen [A-Z] [a-z] **

Referenziert → [Regulärer Ausdruck für Passwort / ^ (? =. *? [Az]) (? =. *? \ D) [az \ d] {8.100} $ / i wird entschlüsselt](https: / /qiita.com/momotaro98/items/460c6cac14473765ec14)

Ruby


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

Erfolgreich.

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

(3) Hinzufügen von Bedingungen für eine oder mehrere Ziffern

Die Bedingung \ d für die Nummern 0-9 bis (2) wurde hinzugefügt.

Ruby


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

Erfolgreich.

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

(4) Symbol Bedingung von 1 Stelle oder mehr hinzufügen

Ich habe ASCII-Code überprüft und das Symbol angegeben. Ich bin \ entkommen, wo sich die Symbole und Metazeichen überschneiden.

Ruby


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

Erfolgreich. Text zur Symbolbestätigung hinzugefügt.

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

6. Zusammenfassung

Reguläre Ausdrücke waren schwer zu verstehen. Ich werde es auf verschiedene andere Arten als zum Festlegen der Passwortrichtlinie verwenden.

Recommended Posts

[Ruby] Regulärer Ausdruck für die Einstellung sicherer Kennwortrichtlinien
Regulärer Ausdruck für Passwort
Ruby regulärer Ausdruck
Ruby-Einstellung 2
Maskieren Sie die durch Trennzeichen getrennte Benutzer-ID / das Kennwort mit einem kanonischen Ausdruck
Ruby Einstellung 3 Rubocop
Grundlagen regulärer Ausdrücke
JS regulärer Ausdruck
Ruby regulärer Ausdruck Auszug aus einer bestimmten Zeichenfolge in eine Zeichenfolge