2016-06-12 5 views
3

解析の便宜のために、$request_bodyフィールドをアクセスログに保存します。ただし、ログに公開されているパスワードやクレジットカード番号など、機体内部には機密情報がいくつかあります。これらの情報をどのように隠すことができますか?nginxログのPOSTボディの機密情報をマスクする方法は?

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

私はデータをマスクするためにnginxのモジュールを記述する場合、私は新しいログモジュールを書くべきか、私はと呼ばれる元のログモジュールの前にリクエストボディを操作する必要がありますか?
または、この目標を達成するためにnginx-luaを使用する必要がありますか?
他の方法がありますか?

答えて

0

使用「echo_read_request_bodyは、」HTTP POSTデータを取得し、その後LOG_FORMATを定義し、サーバ/場所レベルでそれを使う「マッピング」と正規表現

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 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

関連する問題