Opened 9 years ago

Closed 8 years ago

#10777 closed (fixed)

AuthenticationForm.is_valid after validation should reset password field for security reason

Reported by: Robert Lujo Owned by: nobody
Component: contrib.auth Version: master
Severity: Keywords: security
Cc: Triage Stage: Design decision needed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:


When you use django.contrib.auth.views.login for login procedure it works like classic form:

  • GET - creates empty AuthenticationForm object
  • POST - validates usr/pwd against auth backend
  • POST - if ok then you're being logged in and redirected to somewhere
  • POST - if not ok - then you're again on the same page with information that credentials are not ok, and the form is already filled with username and password which you typed in on the page before.

In last case (POST FAIL) the password travels client->server->client. I think the last server->client travel is not needed and can be treated as security issue. Why to pre-fill the password field when it is false anyway, and why to expose password over the network twice, when it could be exposed only once. I didn't had time to investigate how to solve this exactly, but my suggestion is to do work on the AuthenticationForm.is_valid overridden method (can be seen in diff file I attach). Diff is against r1105.

Attachments (2)

20090410_auth_form_reset_pwd.diff (569 bytes) - added by Robert Lujo 9 years ago.
Place where fix the problem
10777.diff (984 bytes) - added by Chris Beaven 9 years ago.

Download all attachments as: .zip

Change History (8)

Changed 9 years ago by Robert Lujo

Place where fix the problem

comment:1 Changed 9 years ago by Chris Beaven

Triage Stage: UnreviewedDesign decision needed
Version: 1.1-beta-1SVN

Here's the correct fix...

Changed 9 years ago by Chris Beaven

Attachment: 10777.diff added

comment:2 Changed 9 years ago by kc9ddi

Would strongly encourage adopting the suggested type of behavior. Not only is it potentially more secure, but it seems to be the most common behavior in use for most login forms users encounter on the internet.

comment:3 Changed 9 years ago by Chris Beaven

Hi kc9ddi,

If you want to promote tickets, the django-dev google group is a better place to do it.

comment:4 Changed 8 years ago by Robert Lujo

Is this duplicate to #13316?

comment:5 Changed 8 years ago by Chris Beaven

Fixed in [13498]

comment:6 Changed 8 years ago by Chris Beaven

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.
Back to Top