【发布时间】:2021-06-26 02:23:45
【问题描述】:
我正在为我的 API 响应开发 .net core c# 日志记录项目。 输出为 JSON 格式,响应包含敏感信息(例如密码)
当响应输出包含更复杂的带有数组的 Json 结构时,我被卡住了,其项目是复杂对象,每个对象都有一个“id”属性和表示敏感字段的关键字,显示为该“id”字段的值(请参阅下面的示例)。
对于以下输出,如果 "id" 的值包含单词 'password' ,我如何使用 RegEx 将密码值替换为 'XXXX' 。例如...下面有需要屏蔽的值...
{
"type": "CatalogResourceRequest",
"description": null,
"reasons": null,
"data": {
"customProperties": [
{
"data": {
"id": "CloneFrom",
"is_hidden": false,
"value": "TMPLABC"
}
},
{
"data": {
"id": "Debug",
"is_hidden": false,
"value": false
}
},
{
"data": {
"id": "abc_password",
"is_hidden": false,
"value": "This_Is_Password_To_Be_Masked"
},
"data": {
"id": "password_of_user1",
"is_hidden": false,
"value": "This_Is_Password_To_Be_Masked_Also"
}
}
]
}
}
【问题讨论】:
-
如果您使用 Serilog 记录到 JSON,您应该知道此功能已经存在:github.com/sandermvanvliet/Serilog.Enrichers.Sensitive
-
asp.net core的版本是多少?你用的是哪个序列化器,Json.Net 还是 System.Text.Json?
-
How to mask sensitive values in JSON for logging purposes 的可能重复项 - 假设您使用的是 Json.Net
标签: c# json regex asp.net-core