Laravel项目中如何在Sentry上报错误时隐藏请求体参数
在Laravel中配置Sentry过滤请求体敏感信息
配置文件位置
执行sentry:publish命令后,Laravel项目根目录会生成config/sentry.php文件,所有Sentry的自定义过滤逻辑都需在此配置。
方式一:使用内置字段过滤
通过配置deny_fields或allowed_fields,快速指定需要隐藏或保留的请求体字段:
return [ // 保留其他原有配置... // 关闭默认个人身份信息发送(默认已关闭,显式设置更清晰) 'send_default_pii' => false, // 指定需要过滤的敏感字段,Sentry会自动隐藏这些字段的值 'deny_fields' => [ 'password', 'credit_card', 'api_token', 'ssn', // 按需添加你的敏感字段 ], // 或者用allowed_fields指定仅允许发送的字段(二选一即可) // 'allowed_fields' => ['name', 'email'], ];
方式二:自定义回调实现精细过滤
如果需要更灵活的控制(比如替换敏感值为***而非完全移除),可以配置before_send回调,在事件上报前修改请求体数据:
return [ // 保留其他原有配置... 'before_send' => function (\Sentry\Event $event): ?\Sentry\Event { // 仅当事件包含请求数据时处理 if ($request = $event->getRequest()) { $body = $request->getParsedBody(); if (is_array($body)) { $sensitiveFields = ['password', 'credit_card', 'token']; foreach ($sensitiveFields as $field) { if (isset($body[$field])) { $body[$field] = '***'; } } // 更新处理后的请求体 $request->setParsedBody($body); $event->setRequest($request); } } return $event; }, ];
生效范围
以上配置对两种捕获场景都生效:
- 框架自动捕获的未处理异常(即你在
register方法中配置的Integration::captureUnhandledException) - 手动调用
app('sentry')->captureException($e)捕获的异常
内容的提问来源于stack exchange,提问作者Dimitrios Desyllas
相关产品推荐
相关产品推荐

