Редактировать конфиденциальную информацию при использовании ServiceStack.Text для сериализации в файлы журналов

Я использую ServiceStack.Text а также ServiceStack.Logging.NLog регистрировать запросы DTO, отправленные в / из веб-службы из клиентского приложения.NET. Хотя машины в целом безопасны, я бы хотел отредактировать конфиденциальную информацию, которая может храниться в виде обычного текста (например, имя, адрес, основные права доступа и т. Д.).

Я смотрел на различные JsConfig<T> методы, но кажется, что я должен был бы реализовать SerializeFn<T> для каждого DTO. В "пропущенном" есть риск, и я хотел бы применить его только к области ведения журнала.

Я смотрел на NLog фильтры и when только изменяет, зарегистрировано ли сообщение.

Есть ли какой-нибудь универсальный способ замены чувствительных свойств / ключей / атрибутов маркером редактирования при регистрации DTO с ServiceStack.Logging \ NLog?

1 ответ

Нет никаких параметров сериализатора с областью действия, которые изменяют, какие поля должны быть сериализованы.

Возможные решения, на которые я обращаю внимание, - это сохранение белого списка типов DTO с конфиденциальной информацией, которую не следует регистрировать, или использование отражения для установки свойств, которые вы не хотите null,

ServiceStack имеет API для преобразования типов в объектный словарь и регидратации типов из словарей, чтобы вы могли сделать что-то вроде:

var map = requestDto.ToObjectDictionary();
ProtectedNames.ForEach(x => map.Remove(x));

Затем вы можете либо сериализовать остальные свойства в map или преобразовать его обратно в запрос DTO без удаленных свойств:

var safeDto = map.FromObjectDictionary(requestDto.GetType());
Другие вопросы по тегам