Skip to content

Commit 89fdff0

Browse files
authored
fix(logs): guard pii in logs (#2076)
1 parent be76fb7 commit 89fdff0

2 files changed

Lines changed: 47 additions & 13 deletions

File tree

src/Logs/LogsAggregator.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -90,20 +90,22 @@ public function add(
9090
$log->setAttribute('sentry.sdk.version', $client->getSdkVersion());
9191
}
9292

93-
$hub->configureScope(static function (Scope $scope) use ($log) {
94-
$user = $scope->getUser();
95-
if ($user !== null) {
96-
if ($user->getId() !== null) {
97-
$log->setAttribute('user.id', $user->getId());
93+
if ($options->shouldSendDefaultPii()) {
94+
$hub->configureScope(static function (Scope $scope) use ($log) {
95+
$user = $scope->getUser();
96+
if ($user !== null) {
97+
if ($user->getId() !== null) {
98+
$log->setAttribute('user.id', $user->getId());
99+
}
100+
if ($user->getEmail() !== null) {
101+
$log->setAttribute('user.email', $user->getEmail());
102+
}
103+
if ($user->getUsername() !== null) {
104+
$log->setAttribute('user.name', $user->getUsername());
105+
}
98106
}
99-
if ($user->getEmail() !== null) {
100-
$log->setAttribute('user.email', $user->getEmail());
101-
}
102-
if ($user->getUsername() !== null) {
103-
$log->setAttribute('user.name', $user->getUsername());
104-
}
105-
}
106-
});
107+
});
108+
}
107109

108110
if (\count($values)) {
109111
$log->setAttribute('sentry.message.template', $message);

tests/Logs/LogsAggregatorTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ public function testAttributesAreAddedToLogMessage(): void
164164
{
165165
$client = ClientBuilder::create([
166166
'enable_logs' => true,
167+
'send_default_pii' => true,
167168
'release' => '1.0.0',
168169
'environment' => 'production',
169170
'server_name' => 'web-server-01',
@@ -210,6 +211,37 @@ public function testAttributesAreAddedToLogMessage(): void
210211
$this->assertSame('my_user', $attributes->get('user.name')->getValue());
211212
}
212213

214+
public function testUserAttributesAreNotAddedToLogMessageWhenSendDefaultPiiIsDisabled(): void
215+
{
216+
$client = ClientBuilder::create([
217+
'enable_logs' => true,
218+
'send_default_pii' => false,
219+
])->getClient();
220+
221+
$hub = new Hub($client);
222+
SentrySdk::setCurrentHub($hub);
223+
224+
$hub->configureScope(static function (Scope $scope) {
225+
$userDataBag = new UserDataBag();
226+
$userDataBag->setId('unique_id');
227+
$userDataBag->setEmail('foo@example.com');
228+
$userDataBag->setUsername('my_user');
229+
$scope->setUser($userDataBag);
230+
});
231+
232+
$aggregator = new LogsAggregator();
233+
$aggregator->add(LogLevel::info(), 'User performed action');
234+
235+
$logs = $aggregator->all();
236+
$this->assertCount(1, $logs);
237+
238+
$attributes = $logs[0]->attributes();
239+
240+
$this->assertNull($attributes->get('user.id'));
241+
$this->assertNull($attributes->get('user.email'));
242+
$this->assertNull($attributes->get('user.name'));
243+
}
244+
213245
public function testFlushesImmediatelyWhenThresholdIsReached(): void
214246
{
215247
StubTransport::$events = [];

0 commit comments

Comments
 (0)