Skip to content

Commit e708afc

Browse files
committed
bugfix: keep "default" pii if it was attached by user
1 parent eef27db commit e708afc

File tree

6 files changed

+31
-33
lines changed

6 files changed

+31
-33
lines changed

sentry_sdk/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def _prepare_event(self, event, scope):
8686
):
8787
raise SkipEvent()
8888

89-
event = strip_event(event, client=self)
89+
event = strip_event(event)
9090
event = flatten_metadata(event)
9191
return event
9292

sentry_sdk/hub.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ def _internal_exceptions():
1818
Hub.current.capture_internal_exception()
1919

2020

21+
def _should_send_default_pii():
22+
client = Hub.current.client
23+
if not client:
24+
return False
25+
return client.options["send_default_pii"]
26+
27+
2128
class HubMeta(type):
2229
@property
2330
def current(self):

sentry_sdk/integrations/_wsgi.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22
import base64
33

4+
from sentry_sdk.hub import _should_send_default_pii
45
from sentry_sdk.stripping import AnnotatedValue
56

67

@@ -47,9 +48,19 @@ def extract_into_event(self, event):
4748
request_info["url"] = self.url
4849
request_info["query_string"] = self.query_string
4950
request_info["method"] = self.method
50-
request_info["headers"] = dict(self.headers)
51+
5152
request_info["env"] = dict(get_environ(self.env))
52-
request_info["cookies"] = dict(self.cookies)
53+
54+
if _should_send_default_pii():
55+
request_info["headers"] = dict(self.headers)
56+
request_info["cookies"] = dict(self.cookies)
57+
else:
58+
request_info["headers"] = {
59+
k: v
60+
for k, v in dict(self.headers).items()
61+
if k.lower().replace("_", "-")
62+
not in ("set-cookie", "cookie", "authentication")
63+
}
5364

5465
if self.form or self.files:
5566
data = dict(self.form.items())

sentry_sdk/integrations/django.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from django.core.urlresolvers import resolve
1010

1111
from sentry_sdk import get_current_hub, configure_scope, capture_exception
12-
from sentry_sdk.hub import _internal_exceptions
12+
from sentry_sdk.hub import _internal_exceptions, _should_send_default_pii
1313
from ._wsgi import RequestExtractor, get_client_ip
1414
from . import Integration
1515

@@ -59,7 +59,7 @@ def processor(event):
5959
with _internal_exceptions():
6060
DjangoRequestExtractor(request).extract_into_event(event)
6161

62-
if "user" not in event:
62+
if _should_send_default_pii():
6363
with _internal_exceptions():
6464
_set_user_info(request, event)
6565

@@ -102,6 +102,9 @@ def size_of_file(self, file):
102102

103103

104104
def _set_user_info(request, event):
105+
if "user" in event:
106+
return
107+
105108
event["user"] = user_info = {"ip_address": get_client_ip(request.META)}
106109

107110
user = getattr(request, "user", None)

sentry_sdk/integrations/flask.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import absolute_import
22

33
from sentry_sdk import capture_exception, get_current_hub
4-
from sentry_sdk.hub import _internal_exceptions
4+
from sentry_sdk.hub import _internal_exceptions, _should_send_default_pii
55
from ._wsgi import RequestExtractor
66
from . import Integration
77

@@ -52,8 +52,9 @@ def _event_processor(event):
5252
with _internal_exceptions():
5353
FlaskRequestExtractor(request).extract_into_event(event)
5454

55-
with _internal_exceptions():
56-
_set_user_info(event)
55+
if _should_send_default_pii():
56+
with _internal_exceptions():
57+
_set_user_info(event)
5758

5859

5960
class FlaskRequestExtractor(RequestExtractor):

sentry_sdk/stripping.py

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def inner(obj):
4545
return obj
4646

4747

48-
def strip_event(event, client=None):
48+
def strip_event(event):
4949
old_frames = event.get("stacktrace", {}).get("frames", None)
5050
if old_frames:
5151
event["stacktrace"]["frames"] = [strip_frame(frame) for frame in old_frames]
@@ -54,30 +54,6 @@ def strip_event(event, client=None):
5454
if old_request_data:
5555
event["request"]["data"] = strip_databag(old_request_data)
5656

57-
if not client or not client.options["send_default_pii"]:
58-
event = strip_default_pii(event)
59-
60-
return event
61-
62-
63-
def strip_default_pii(event):
64-
if event.get("user"):
65-
event["user"] = None
66-
67-
request = event.get("request")
68-
if request:
69-
if request.get("cookies"):
70-
request["cookies"] = None
71-
if request.get("headers"):
72-
headers = request["headers"]
73-
for key in list(headers):
74-
if key.lower().replace("_", "-") in (
75-
"set-cookie",
76-
"cookie",
77-
"authentication",
78-
):
79-
headers[key] = None
80-
8157
return event
8258

8359

0 commit comments

Comments
 (0)