为了便于分析,我们在访问日志中保存$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)!