Inhalte von Passwort-Feldern nicht wieder anzeigen
Das Passwort-Widget aus Django Newforms zeigt bei einer erneuten Ausgabe den Formulares den Inhalt wieder an. Das ist zum einen sicherheitskritisch: in einem ungünstigen Fall könnte ein Dritter die Daten des Formulares erkunden und das Passwort sehen (Der Wert eines Passwort-Feldes ist im HTML-Quelltext klar zu sehen), zum anderen soll der User sowieso beide Passwörter neu eingeben.
Als Beispiel dient dieses einfache Registrierungsformular:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class RegistrationForm(forms.Form): name = forms.CharField(label='Name') password = forms.CharField(label='Passwort', widget=forms.PasswordInput) password_confirm = forms.CharField(label='Passwort (Bestätigung)', widget=forms.PasswordInput) # Prüfe hier, ob überhaupt korrekte Passwörter eingegeben wurden # def clean_password(self): # ... bspw. auf mindestens 8 Zeichen prüfen, wovon mindestens 1 Ziffer dabei ist def clean(self): if self.cleaned_data.get('password') != self.cleaned_data.get('password_confirm'): raise forms.ValidationError('Die beiden Passwörter müssen identisch sein') return self.cleaned_data |
Angenommen wir klicken einmal auf den Submit-Button so würde das Formular (da in unserem Fall die Passwörter nicht identisch sind) wieder angezeigt:
Das Passwort wird wieder angezeigt.
Das PasswordInput-Widget bietet aber eine (nicht dokumentierte?) Funktion, den Inhalt des Feldes nicht mehr, genauer gesagt: nie, anzeigen zu lassen. Füge dem Wigdet das Attribut render_value=False hinzu und das Passwort-Feld ist bei jedem Rendern des Formulares leer.
Beispiel:
1 2 3 4 5 6 | class RegistrationForm(forms.Form): name = forms.CharField(label='Name') password = forms.CharField(label='Passwort', widget=forms.PasswordInput(render_value=False)) password_confirm = forms.CharField(label='Passwort (Bestätigung)', widget=forms.PasswordInput(render_value=False)) # ... |
Geschrieben am: 17. März 2008 um 22:36 Uhr, Abgelegt in Django & Python
Kommentare zu diesem Artikel (1):
-
Bernhard schrieb am 19. März 2008:
Ist schon erstaunlich, mit den Passwörter. Oftmals meldet man sich geheimnisvoll im Passwortfeld verdeckt an und bekommt dann per E-Mail eine Anmeldebestätigung mit dem ausgeschriebenen Passwort zugeschickt - schöne Sicherheit im Netz!
Kommentar schreiben