Sometimes get "incorrect padding error"- new bug in django 3.1?

1,363 views
Skip to first unread message

Diptesh Choudhuri

unread,
Aug 10, 2020, 7:21:34 AM8/10/20
to Django users


Environment:




Request Method: GET
Request URL: http://127.0.0.1:8000/admin/


Django Version: 3.1
Python Version: 3.8.3
Installed Applications:
['django.contrib.admin',
 
'django.contrib.auth',
 
'django.contrib.contenttypes',
 
'django.contrib.sessions',
 
'django.contrib.messages',
 
'django.contrib.staticfiles',
 
'rest_framework',
 
'rest_framework.authtoken',
 
'accounts.apps.AccountsConfig',
 
'posts.apps.PostsConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 
'django.contrib.sessions.middleware.SessionMiddleware',
 
'django.middleware.common.CommonMiddleware',
 
'django.middleware.csrf.CsrfViewMiddleware',
 
'django.contrib.auth.middleware.AuthenticationMiddleware',
 
'django.contrib.messages.middleware.MessageMiddleware',
 
'django.middleware.clickjacking.XFrameOptionsMiddleware']






Traceback (most recent call last):
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 215, in _get_session
   
return self._session_cache


During handling of the above exception ('SessionStore' object has no attribute '_session_cache'), another exception occurred:
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 118, in decode
   
return signing.loads(session_data, salt=self.key_salt, serializer=self.serializer)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/core/signing.py", line 135, in loads
    base64d
= TimestampSigner(key, salt=salt).unsign(s, max_age=max_age).encode()
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/core/signing.py", line 201, in unsign
    result
= super().unsign(value)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/core/signing.py", line 184, in unsign
   
raise BadSignature('Signature "%s" does not match' % sig)


During handling of the above exception (Signature "JKiu07_FryzGGxaZmuA9hc0WmtZKBMOOeOj3Fp3j8ho" does not match), another exception occurred:
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response
= get_response(request)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 179, in _get_response
    response
= wrapped_callback(request, *callback_args, **callback_kwargs)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 251, in wrapper
   
return self.admin_view(view, cacheable)(*args, **kwargs)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
    response
= view_func(request, *args, **kwargs)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response
= view_func(request, *args, **kwargs)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 222, in inner
   
if not self.has_permission(request):
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 196, in has_permission
   
return request.user.is_active and request.user.is_staff
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/utils/functional.py", line 240, in inner
   
self._setup()
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/utils/functional.py", line 376, in _setup
   
self._wrapped = self._setupfunc()
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/auth/middleware.py", line 23, in <lambda>
    request
.user = SimpleLazyObject(lambda: get_user(request))
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/auth/middleware.py", line 11, in get_user
    request
._cached_user = auth.get_user(request)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/auth/__init__.py", line 174, in get_user
    user_id
= _get_user_session_key(request)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/auth/__init__.py", line 58, in _get_user_session_key
   
return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 65, in __getitem__
   
return self._session[key]
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 220, in _get_session
   
self._session_cache = self.load()
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/sessions/backends/db.py", line 44, in load
   
return self.decode(s.session_data) if s else {}
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 122, in decode
   
return self._legacy_decode(session_data)
 
File "/home/ignisda/.cache/pypoetry/virtualenvs/backend-3DENPaHW-py3.8/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 126, in _legacy_decode
    encoded_data
= base64.b64decode(session_data.encode('ascii'))
 
File "/usr/lib/python3.8/base64.py", line 87, in b64decode
   
return binascii.a2b_base64(s)


Exception Type: Error at /admin/
Exception Value: Incorrect padding


This happened first when I was developing on my Android device using Termux app. I switched my browser to Google-Chrome and the issue was resolved.
Then today I was developing on my PC, using qutebrowser and this error popped up again. Switching to Google-Chrome fixed the issue.

I don't think this is an issue with the browsers themselves, because I have completed entire django projects in both these devices, and never had to switch to Chrome.

The only differences happen to be- This is my first time using djangorestframework, first time using django 3.1

Is this a bug that has leaked into django 3.1 inadvertently?

Matthew Hegarty

unread,
Aug 17, 2020, 4:24:49 PM8/17/20
to Django users
Hey Diptesh - did you get anywhere with understanding this?  Did y ou get any response from the Django devs?
Just happened to me on my Staging site.  Recently upgraded from 3.0 to 3.1

I can login with Firefox, but Chrome crashes with the following error:

```python
Internal Server Error: /home/
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 215, in _get_session
return self._session_cache
AttributeError: 'SessionStore' object has no attribute '_session_cache'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 118, in decode
return signing.loads(session_data, salt=self.key_salt, serializer=self.serializer)
File "/usr/local/lib/python3.8/site-packages/django/core/signing.py", line 135, in loads
base64d = TimestampSigner(key, salt=salt).unsign(s, max_age=max_age).encode()
File "/usr/local/lib/python3.8/site-packages/django/core/signing.py", line 201, in unsign
result = super().unsign(value)
File "/usr/local/lib/python3.8/site-packages/django/core/signing.py", line 184, in unsign
raise BadSignature('Signature "%s" does not match' % sig)
django.core.signing.BadSignature: Signature "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" does not match
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 73, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/mixins.py", line 50, in dispatch
if not request.user.is_authenticated:
File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 240, in inner
self._setup()
File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 376, in _setup
self._wrapped = self._setupfunc()
File "/usr/local/lib/python3.8/site-packages/django_otp/middleware.py", line 38, in _verify_user
user.otp_device = None
File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 270, in __setattr__
self._setup()
File "/usr/local/lib/python3.8/site-packages/django/utils/functional.py", line 376, in _setup
self._wrapped = self._setupfunc()
File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/middleware.py", line 23, in <lambda>
request.user = SimpleLazyObject(lambda: get_user(request))
File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/middleware.py", line 11, in get_user
request._cached_user = auth.get_user(request)
File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/__init__.py", line 174, in get_user
user_id = _get_user_session_key(request)
File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/__init__.py", line 58, in _get_user_session_key
return get_user_model()._meta.pk.to_python(request.session[SESSION_KEY])
File "/usr/local/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 65, in __getitem__
return self._session[key]
File "/usr/local/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 220, in _get_session
self._session_cache = self.load()
File "/usr/local/lib/python3.8/site-packages/django/contrib/sessions/backends/db.py", line 44, in load
return self.decode(s.session_data) if s else {}
File "/usr/local/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 122, in decode
return self._legacy_decode(session_data)
File "/usr/local/lib/python3.8/site-packages/django/contrib/sessions/backends/base.py", line 126, in _legacy_decode
encoded_data = base64.b64decode(session_data.encode('ascii'))
File "/usr/local/lib/python3.8/base64.py", line 87, in b64decode
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
```

Matthew Hegarty

unread,
Aug 18, 2020, 4:11:42 AM8/18/20
to django...@googlegroups.com
Raised a ticket
The only workaround is to truncate the django_session table.  (clearsessions did not work) 

--
You received this message because you are subscribed to a topic in the Google Groups "Django users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/django-users/PExKciSIqeU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/9356132f-625e-4556-8107-c8de70a0c540n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages