From bd6ee80690104210641a31b18966260e269db1a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sarah=20Sch=C3=BCtz?= Date: Thu, 19 Jan 2023 22:11:17 +0100 Subject: [PATCH] Add configuration to scrub sensitive data from request --- src/Plugin.php | 4 ++++ src/models/Settings.php | 1 + src/services/SentryService.php | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/src/Plugin.php b/src/Plugin.php index aa6e778..42bfead 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -79,6 +79,10 @@ public function init() }; } + if ($settings->sensitiveFields && is_array($settings->sensitiveFields)) { + $this->sentry->initDataScrubbing($settings->sensitiveFields, $options); + } + Sentry\init($options); /** diff --git a/src/models/Settings.php b/src/models/Settings.php index 044a5e4..88feb17 100644 --- a/src/models/Settings.php +++ b/src/models/Settings.php @@ -15,6 +15,7 @@ class Settings extends Model public $sampleRate = 1.0; // Client only option public $performanceMonitoring = true; // Client only option public $autoSessionTracking = false; // Client only option + public $sensitiveFields; // Fields containing sensitive data in request public function rules() { diff --git a/src/services/SentryService.php b/src/services/SentryService.php index f79a118..1e76afe 100644 --- a/src/services/SentryService.php +++ b/src/services/SentryService.php @@ -34,4 +34,22 @@ public function handleException($exception) Sentry\captureException($exception); } + + public function initDataScrubbing($sensitiveFields, &$options) + { + $options['before_send'] = function (Sentry\Event $event) use ($sensitiveFields) { + $replaceValue = '[Filtered]'; + $request = $event->getRequest(); + + if(isset($request['data'])) { + foreach ($sensitiveFields as $sensitiveField) { + if(is_string($sensitiveField) && isset($request['data'][$sensitiveField])) { + $request['data'][$sensitiveField] = $replaceValue; + } + } + } + $event->setRequest($request); + return $event; + }; + } } \ No newline at end of file