为了便于分析,我们将该$request_body字段保存在访问日志中。但是,帖子正文中有一些敏感信息,例如密码或信用卡号,这些信息会在日志中显示。我们如何掩盖这些信息?
password=1234asdf -> password=****
Run Code Online (Sandbox Code Playgroud)
如果我编写了一个用于屏蔽数据的Nginx模块,我应该编写一个新的日志模块,还是应该在调用原始日志模块之前操纵请求主体?
还是应该使用nginx-lua来实现此目标?
还是还有其他方法?
小智 3
使用“echo_read_request_body”命令获取 HTTP POST 数据,然后使用“map”和正则表达式过滤密码
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 '';
}
Run Code Online (Sandbox Code Playgroud)
然后定义 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"';
Run Code Online (Sandbox Code Playgroud)
以下是更多信息: https: //www.rstcloud.net/blog/30-how-to-hide-sensitive-post-data-in-nginx-log
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |