当前位置:首页 > 服务器技术 > nginx

如何在nginx日志中屏蔽POST主体的敏感信息?

为了便于分析,我们在访问日志中保存$request_body字段.但是,帖子正文中有一些敏感信息,如密码或信用卡号,在日志中公开.我们如何掩盖这些信息?

password=1234asdf  ->  password=****

如果我编写一个nginx模块来屏蔽数据,我应该编写一个新的日志模块,还是应该在调用原始日志模块之前操作请求体?
或者我应该使用nginx-lua来实现这个目标?
或者还有其他方法吗?

解决方法:

使用’echo_read_request_body’命令获取HTTP POST数据,然后使用’map’和regex过滤密码

map $request_body $req_body_start {
    "~(?<nopwd>.*)&password=[^&]*.+"  $nopwd;
    default        $request_body;
}

map $request_body $req_body_end {
    "~.*&password=[^&]*(?<nopwd1>.+)"  $nopwd1;
    default        '';
}

 map $request_body $req_body_pwd {
    "~.*&password=[^&]*.+"  '&password=****';
    default        '';
}

然后定义log_format并在服务器/位置级别上使用它:

log_format  logreqbody  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" "$req_body_start$req_body_pwd$req_body_end"';

这是更多信息:https://www.rstcloud.net/blog/30-how-to-hide-sensitive-post-data-in-nginx-log


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!