mirror of
https://github.com/django/django.git
synced 2025-10-26 15:16:09 +00:00
Fixed CVE-2018-6188 -- Fixed information leakage in AuthenticationForm.
Reverted 359370a8b8 (refs #28645).
This is a security fix.
This commit is contained in:
@@ -313,6 +313,9 @@ class UserCreationFormTest(ReloadFormsMixin, TestDataMixin, TestCase):
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
|
||||
# To verify that the login form rejects inactive users, use an authentication
|
||||
# backend that allows them.
|
||||
@override_settings(AUTHENTICATION_BACKENDS=['django.contrib.auth.backends.AllowAllUsersModelBackend'])
|
||||
class AuthenticationFormTest(TestDataMixin, TestCase):
|
||||
|
||||
def test_invalid_username(self):
|
||||
@@ -342,6 +345,24 @@ class AuthenticationFormTest(TestDataMixin, TestCase):
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(form.non_field_errors(), [str(form.error_messages['inactive'])])
|
||||
|
||||
# Use an authentication backend that rejects inactive users.
|
||||
@override_settings(AUTHENTICATION_BACKENDS=['django.contrib.auth.backends.ModelBackend'])
|
||||
def test_inactive_user_incorrect_password(self):
|
||||
"""An invalid login doesn't leak the inactive status of a user."""
|
||||
data = {
|
||||
'username': 'inactive',
|
||||
'password': 'incorrect',
|
||||
}
|
||||
form = AuthenticationForm(None, data)
|
||||
self.assertFalse(form.is_valid())
|
||||
self.assertEqual(
|
||||
form.non_field_errors(), [
|
||||
form.error_messages['invalid_login'] % {
|
||||
'username': User._meta.get_field('username').verbose_name
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
def test_login_failed(self):
|
||||
signal_calls = []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user