Skip to content

Commit 39e2516

Browse files
author
Cal Stroud
committed
Added a regex that will remove any excluded keys from the API string if they are included as GET parameters
1 parent 18544c6 commit 39e2516

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

drf_api_logger/middleware/api_logger_middleware.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
22
import time
3+
import re
34
from django.conf import settings
45
from django.urls import resolve
56
from django.utils import timezone
@@ -122,7 +123,7 @@ def __call__(self, request):
122123
api = request.build_absolute_uri()
123124

124125
data = dict(
125-
api=api,
126+
api=mask_sensitive_data(api, mask_api_parameters=True),
126127
headers=mask_sensitive_data(headers),
127128
body=mask_sensitive_data(request_data),
128129
method=method,

drf_api_logger/utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,20 @@ def database_log_enabled():
4747
return drf_api_logger_database
4848

4949

50-
def mask_sensitive_data(data):
50+
def mask_sensitive_data(data, mask_api_parameters=False):
5151
"""
5252
Hides sensitive keys specified in sensitive_keys settings.
5353
Loops recursively over nested dictionaries.
54+
55+
When the mask_api_parameters parameter is set, the function will
56+
instead iterate over sensitive_keys and remove them from an api
57+
URL string.
5458
"""
5559

5660
if type(data) != dict:
61+
if mask_api_parameters and type(data) == str:
62+
for sensitive_key in SENSITIVE_KEYS:
63+
data = re.sub('({}=)(.*?)($|&)'.format(sensitive_key), '\g<1>***FILTERED***\g<3>'.format(sensitive_key.upper()), data)
5764
return data
5865

5966
for key, value in data.items():

0 commit comments

Comments
 (0)