使用正则表达式从日志中删除敏感信息
Removing sensitive informations from the logs using regex
在我的 Ruby 应用程序中,我有以下正则表达式可以帮助我从日志中删除敏感信息:
/(\"|")secure[^:]+:\s*.*?/
当日志中包含以下信息时有效:
{"secure_data": "Test"}
但是当我在日志中有对象而不是字符串时它不起作用:
{"secure_data": {"name": "Test"}}
如何更新正则表达式以适用于这两种情况?
以下应该适用于您要执行的操作。不过,我建议使用 json 解析器。
{"secure[^:]*?:\s({?(?:(?:,[^"]*?)?"[^"]*?"(?::\s"[^"]*?")?)*?)*?}?}
使用此正则表达式,secure_data 中的对象也可能包含多个键值(字符串)对。它仍然会匹配。其他对象不会。
您可以将此正则表达式与否定字符 类 和一个替代字符一起使用:
"secure[^:]+:\s*(?:"[^"]*"|{[^}]*})
在非捕获组 (?:"[^"]*"|{[^}]*})
中,我们正在匹配带引号的字符串或以 {
开头并以 }
结尾的对象。
在我的 Ruby 应用程序中,我有以下正则表达式可以帮助我从日志中删除敏感信息:
/(\"|")secure[^:]+:\s*.*?/
当日志中包含以下信息时有效:
{"secure_data": "Test"}
但是当我在日志中有对象而不是字符串时它不起作用:
{"secure_data": {"name": "Test"}}
如何更新正则表达式以适用于这两种情况?
以下应该适用于您要执行的操作。不过,我建议使用 json 解析器。
{"secure[^:]*?:\s({?(?:(?:,[^"]*?)?"[^"]*?"(?::\s"[^"]*?")?)*?)*?}?}
使用此正则表达式,secure_data 中的对象也可能包含多个键值(字符串)对。它仍然会匹配。其他对象不会。
您可以将此正则表达式与否定字符 类 和一个替代字符一起使用:
"secure[^:]+:\s*(?:"[^"]*"|{[^}]*})
在非捕获组 (?:"[^"]*"|{[^}]*})
中,我们正在匹配带引号的字符串或以 {
开头并以 }
结尾的对象。