Wenn ein Datum vom Type DateTime nullable ist, lässt sich mit einem einfachen Vergleich auf != null prüfen, ob ein Wert gesetzt wurde.
Kann eine Eigenschaft oder Variable vom Type DateTime indes nicht den Wert null annehmen, so lässt sich das Vorhandensein einer Eingabe gegen den Defaultwert MinValue validieren.
Qualität eines gegeben Passworts prüfen
Als Entwickler steht man in der Pflicht die Logins von Benutzer der Software abzusichern. Ein wesentlicher Baustein ist das Forcieren einer Kennwortrichtlinie, um die Qualität eines Passworts sicherzustellen.
Das folgende C#-Snippet bietet eine rudimentäre, für die meisten Anwendungen ausreichende Bewertung des Kennworts. Im Snippet verwende ich ein enum, um einen Passwort Score zu repräsentieren:
- Blank – 0 Punkte
- VeryWeak – 1 Punkt
- Weak – 2 Punkte
- Medium – 3 Punkte
- Strong – 4 Punkte
- VeryStrong – 5 Punkte
Bei der Prüfung des Passworts verwende ich folgendes Regelwerk:
- Das Passwort ist eine Zeichenkette mit 0 Zeichen
- Es wird der enum-Wert von Blank, also 0 Punkte zurückgegeben.
- Das Passwort umfasst weniger als 4 Zeichen
- Das Passwort ist als sehr schwach einzustufen, demnach wird der enum-Wert VeryWeak zurückgegeben. Selbst wenn das Passwort die nachfolgenden Kriterien hinsichtlich Sonderzeichen, Zahlen oder gemischter Groß- und Kleinschreibung erfüllen würde, wäre es aufgrund seiner Länge als unsicher einzustufen.
- Das Passwort umfasst mindestens 8 Zeichen
- Das Scoring wird um einen Punkt erhöht und die Prüfung fortgesetzt.
- Das Passwort umfasst mindestens 12 Zeichen
- Das Scoring wird um einen Punkt erhöht und die Prüfung fortgesetzt. Da hier bereits die Bediendung „mindestens 8 Zeichen“ erfüllt ist, beträgt das Scoring2 und das Passwort wäre als schwach einzustufen.
- Das Passwort enthält mindestens eine Ziffer
- Ein weiterer Punkt wird hinzuaddiert und die Prüfung fortgesetzt.
- Das Passwort enthält sowohl Klein, als auch Großbuchstaben
- Das Scoring wird um einen Punkt erhöht und die Prüfung fortgesetzt.
- Das Passwort enthält mindestens 1 Sonderzeichen
- Das Scoring wird in dieser letzten Prüfung um eins erhöht. Das Scoring kann nun maximal 5 Punkte betragen. Das Passwort stufe ich somit als sehr stark ein.
Ich möchte betonen, dass die Bewertung nur als grobe Richtlinie betrachtet werden kann. Das Passwort „rush2112“ wird von meinem Bewertungsschema als „medium“ eingestuft, ist jedoch in der von Symantec veröffentlichten Liste der 500 schlechtesten Passwörter enthalten und somit hochgradig unsicher.
Mögliche Ausbaustufen der Richtlinie bestünden darin solche Listen sowie generell Wörterbücher zu berücksichtigen.