Opened 16 years ago

Closed 14 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: dev
Severity: Keywords: security
Cc: Triage Stage: Design decision needed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

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 16 years ago.
Place where fix the problem
10777.diff (984 bytes ) - added by Chris Beaven 15 years ago.

Download all attachments as: .zip

Change History (8)

by Robert Lujo, 16 years ago

Place where fix the problem

comment:1 by Chris Beaven, 15 years ago

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

Here's the correct fix...

by Chris Beaven, 15 years ago

Attachment: 10777.diff added

comment:2 by kc9ddi, 15 years ago

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 by Chris Beaven, 15 years ago

Hi kc9ddi,

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

comment:4 by Robert Lujo, 14 years ago

Is this duplicate to #13316?

comment:5 by Chris Beaven, 14 years ago

Fixed in [13498]

comment:6 by Chris Beaven, 14 years ago

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