freakydog: Inhalte von Passwort-Feldern nicht wieder anzeigen

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):

  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

Kommentar hinzufügen

Neue Kommentare sind nur noch über diese Seite möglich.