Nginx访问 - 日志请求 - 查询 - 参数密码匿名化

时间:2018-05-07 15:25:18

标签: http security nginx

如何在nginx的accesslog中匿名化密码? 我有一个查询字符串,如'www.domain.tld?user = abc& password = 123456& login = true'或带有passwort作为参数的序列化json对象。

1 个答案:

答案 0 :(得分:0)

首先将其添加到服务器部分:

set $tempreq $request;
if ($tempreq ~ (.*passwor[dt]=)[^&]*(.*)) {
     set $tempreq $1******$2;
}
if ($tempreq ~ (.*passwor[dt]%22%3A%22).*?(%22.*)) {
     set $tempreq $1******$2;
}
access_log /var/log/nginx/access.log passfilter;

将其添加到nginx.conf中的http部分

log_format passfilter   '$remote_addr - $remote_user [$time_local] '                                                                                             
                        '"$tempreq" $status $body_bytes_sent'                                                                                                    
                        '"$http_referer" "$http_user_agent"';  

它会在查询字符串中屏蔽密码,例如'password = 12345'和'password%22%3A%22abcdef%22%2C'

在重新加载nginx之前,不要用'sudo nginx -t'检查配置。