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)
Change History (8)
by , 16 years ago
Attachment: | 20090410_auth_form_reset_pwd.diff added |
---|
comment:1 by , 16 years ago
Triage Stage: | Unreviewed → Design decision needed |
---|---|
Version: | 1.1-beta-1 → SVN |
Here's the correct fix...
by , 16 years ago
Attachment: | 10777.diff added |
---|
comment:2 by , 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 , 15 years ago
Hi kc9ddi,
If you want to promote tickets, the django-dev google group is a better place to do it.
comment:6 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Place where fix the problem