You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:25:45