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.
** "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.
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.
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) |
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.
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?
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.
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.
Die Bedingung \ d
für die Nummern 0-9 bis (2) wurde hinzugefügt.
Ruby
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)[!-~]{10,40}$
Erfolgreich.
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.
Reguläre Ausdrücke waren schwer zu verstehen. Ich werde es auf verschiedene andere Arten als zum Festlegen der Passwortrichtlinie verwenden.
Recommended Posts