File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed
Expand file tree Collapse file tree 2 files changed +31
-1
lines changed 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"
1517 request = requests .Request (
18+ headers = {
19+ "Api-Key" : secret_api_key ,
20+ "Cookie" : secret_cookie ,
21+ },
1622 url = base_url ,
1723 method = "GET" ,
1824 )
1925 log = self .log_model .log_request (request )
2026
2127 self .assertEqual (log .request_url , base_url )
2228 self .assertEqual (log .request_method , "GET" )
29+ headers_dict = log .request_headers .values ()
30+ self .assertNotIn (secret_api_key , headers_dict )
31+ self .assertNotIn (secret_cookie , headers_dict )
2332
2433 def test_log_response (self ):
2534 response = Response ()
You can’t perform that action at this time.
0 commit comments