mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
8c35a0a903
On successful submission of a password reset request, an email is sent to the accounts known to the system. If sending this email fails (due to email backend misconfiguration, service provider outage, network issues, etc.), an attacker might exploit this by detecting which password reset requests succeed and which ones generate a 500 error response. Thanks to Thibaut Spriet for the report, and to Mariusz Felisiak, Adam Johnson, and Sarah Boyce for the reviews.
21 lines
606 B
Python
21 lines
606 B
Python
"""A custom backend for testing."""
|
|
|
|
from django.core.mail.backends.base import BaseEmailBackend
|
|
|
|
|
|
class EmailBackend(BaseEmailBackend):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self.test_outbox = []
|
|
|
|
def send_messages(self, email_messages):
|
|
# Messages are stored in an instance variable for testing.
|
|
self.test_outbox.extend(email_messages)
|
|
return len(email_messages)
|
|
|
|
|
|
class FailingEmailBackend(BaseEmailBackend):
|
|
|
|
def send_messages(self, email_messages):
|
|
raise ValueError("FailingEmailBackend is doomed to fail.")
|