mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #19866 -- Added security logger and return 400 for SuspiciousOperation.
SuspiciousOperations have been differentiated into subclasses, and are now logged to a 'django.security.*' logger. SuspiciousOperations that reach django.core.handlers.base.BaseHandler will now return a 400 instead of a 500. Thanks to tiwoc for the report, and Carl Meyer and Donald Stufft for review.
This commit is contained in:
@@ -8,9 +8,10 @@ import warnings
|
||||
from django.conf import LazySettings
|
||||
from django.core import mail
|
||||
from django.test import TestCase, RequestFactory
|
||||
from django.test.utils import override_settings
|
||||
from django.test.utils import override_settings, patch_logger
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.log import CallbackFilter, RequireDebugFalse, RequireDebugTrue
|
||||
from django.utils.log import (CallbackFilter, RequireDebugFalse,
|
||||
RequireDebugTrue)
|
||||
from django.utils.six import StringIO
|
||||
from django.utils.unittest import skipUnless
|
||||
|
||||
@@ -354,3 +355,22 @@ class SettingsConfigureLogging(TestCase):
|
||||
settings.configure(
|
||||
LOGGING_CONFIG='logging_tests.tests.dictConfig')
|
||||
self.assertTrue(dictConfig.called)
|
||||
|
||||
|
||||
class SecurityLoggerTest(TestCase):
|
||||
|
||||
urls = 'logging_tests.urls'
|
||||
|
||||
def test_suspicious_operation_creates_log_message(self):
|
||||
with self.settings(DEBUG=True):
|
||||
with patch_logger('django.security.SuspiciousOperation', 'error') as calls:
|
||||
response = self.client.get('/suspicious/')
|
||||
self.assertEqual(len(calls), 1)
|
||||
self.assertEqual(calls[0], 'dubious')
|
||||
|
||||
def test_suspicious_operation_uses_sublogger(self):
|
||||
with self.settings(DEBUG=True):
|
||||
with patch_logger('django.security.DisallowedHost', 'error') as calls:
|
||||
response = self.client.get('/suspicious_spec/')
|
||||
self.assertEqual(len(calls), 1)
|
||||
self.assertEqual(calls[0], 'dubious')
|
||||
|
||||
Reference in New Issue
Block a user