为了便于分析,我们在访问日志中保存$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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。