rbac: use constant-time comparison in SecretKeyFilter (#24888)

This commit is contained in:
Bunlong Heng
2026-08-10 09:07:43 -04:00
committed by GitHub
parent 506ec5ca72
commit 28a07c7eb0

View File

@@ -1,5 +1,7 @@
"""RBAC API Filter"""
from hmac import compare_digest
from django.conf import settings
from django.db.models import QuerySet
from django_filters.rest_framework import DjangoFilterBackend
@@ -103,7 +105,7 @@ class SecretKeyFilter(DjangoFilterBackend):
def filter_queryset(self, request: Request, queryset: QuerySet, view) -> QuerySet:
auth_header = get_authorization_header(request)
token = validate_auth(auth_header)
if token and token == settings.SECRET_KEY:
if token and compare_digest(token, settings.SECRET_KEY):
return queryset
queryset = ObjectFilter().filter_queryset(request, queryset, view)
return super().filter_queryset(request, queryset, view)