File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -59,9 +59,30 @@ class APILog(models.Model):
5959 compute = "_compute_response_headers_derived" , store = True
6060 )
6161
62+ @api .model
63+ def _headers_hidden_keys (self ):
64+ """Header keys that should not be logged.
65+
66+ They might contains sensitive data.
67+ """
68+ return (
69+ "Api-Key" ,
70+ "Cookie" ,
71+ )
72+
73+ @api .model
74+ def _sanitize_headers_dict (self , headers_dict ):
75+ keys_to_hide = self ._headers_hidden_keys ()
76+ for key in headers_dict :
77+ if key in keys_to_hide :
78+ headers_dict [key ] = "<redacted>"
79+ return headers_dict
80+
81+ @api .model
6282 def _headers_to_dict (self , headers ):
6383 try :
64- return {key .lower (): value for key , value in headers .items ()}
84+ headers_dict = {key : value for key , value in headers .items ()}
85+ return self ._sanitize_headers_dict (headers_dict )
6586 except AttributeError :
6687 return {}
6788
Original file line number Diff line number Diff line change 1212class TestAPILog (CommonAPILog ):
1313 def test_log_request (self ):
1414 base_url = self .base_url ()
15+ secret_api_key = "my-secret-api-key"
16+ secret_cookie = "my-secret-biscuit"
17+ public_header_value = "public_header_value"
1518 httprequest = requests .Request (
19+ headers = {
20+ "Api-Key" : secret_api_key ,
21+ "Cookie" : secret_cookie ,
22+ "Public-Header" : public_header_value ,
23+ },
1624 url = base_url ,
1725 method = "GET" ,
1826 )
@@ -21,6 +29,10 @@ def test_log_request(self):
2129
2230 self .assertEqual (log .request_url , base_url )
2331 self .assertEqual (log .request_method , "GET" )
32+ headers_values = log .request_headers .values ()
33+ self .assertNotIn (secret_api_key , headers_values )
34+ self .assertNotIn (secret_cookie , headers_values )
35+ self .assertIn (public_header_value , headers_values )
2436
2537 def test_log_response (self ):
2638 response = Response ()
You can’t perform that action at this time.
0 commit comments