c# - 用于匹配和替换子字符串的正则表达式
问题描述
我们有记录功能来记录所有请求,现在我想从请求正文中隐藏一些敏感数据。
string body = null;
using (var reader = new StreamReader(request.InputStream))
{
request.InputStream.Seek(0L, SeekOrigin.Begin);
body = reader.ReadToEnd();
}
if (!string.IsNullOrWhiteSpace(body))
{
_logger.NameValueLogger.Add("body", RemoveSensitiveData(body));
}
正文内容示例:
"Id=12345&Id=&Name=TestName&AddressLine1=1232+test+&AddressLine2=sdf&City=abcd"
现在在RemoveSensitiveData()我想搜索名称并将名称值“TestName”替换为“*****”
此外,如果我想与名称一起隐藏任何其他字段,我也必须替换它们。
任何人都可以建议处理这个问题的最佳方法吗?
解决方案
这应该这样做:
string RemoveSensitiveData(string value) => Regex.Replace(value, "((^|&)(Name|OtherSensitiveData)=)[^&]+", m => m.Groups[1].Value + "*****")
编辑:添加(^|&)
确保完全匹配
推荐阅读
- tcp - 为什么 TCP 接收窗口是 MSS 的倍数?
- android - 任务“:app:runCheckstyle”执行失败
- terraform - 是否可以使用 terraform 在 AWS 机密管理器中设置多用户机密轮换?
- python - 如何对作用于会话特定数据的 pytest 插件的钩子进行单元测试?
- php - 处理会话已经开始 & set_cookie_params
- windows - 环境变量无法正常工作
- mysql - MySQL全文按列得分
- php - 如何在php中获取上一页的URL
- performance - 时钟周期中的缓存未命中延迟
- bash - Bash 不断抛出“语法错误:文件意外结束”