2016-01-25 2 views
2

У меня есть некоторые конфиденциальные данные, которые я хочу сохранить зашифрованными в db и расшифровать их на лету в коде. Поскольку это существующее приложение, я хотел бы, чтобы процесс шифрования/дешифрования выполнялся как можно ниже в конвейере, поэтому мне не нужно изменять уровень моих услуг. Мое первое решение заключалось в внесении изменений в getters и seters для выбранных свойств, чтобы запустить их через мой помощник шифрования. Тогда я подумал, что было бы неплохо иметь это завернутое в атрибут. Найдено Post Sharp расширение, которое могло бы это сделать, но, похоже, это перебор для этого сценария. Есть ли другие альтернативы для достижения того, что я хочу сделать?Альтернатива переопределению геттеров и сеттеров

+0

Атрибуты - это всего лишь метаданные; они ничего не делают сами по себе. Как именно вы хотите использовать атрибуты? –

+0

Это приложение MVC? Веб-формы? Формы Windows? –

+0

@D Stanley Предположим, что мы будем называть Aspect Oriented Programming. Подробнее здесь http://stackoverflow.com/questions/11868881/generate-custom-setter-using-attributes – Bartosz

ответ

1

В зависимости от того, как вы используете EF, вы можете создать оболочку поверх EF DbContext, общего хранилища, в которое вы могли бы добавить некоторые крючки (перехватчики).

Один из этих перехватчиков было бы что-то вроде ICryptographyInterceptor, который будет заниматься вопросами на основе объекта типа логики для шифрования (на вставке) или дешифрования (на извлечения), и это не будет загрязнять ваш бизнес-логики или модели, так как эти перехватчики будет справляться с этой задачей.

Существующая реализация может быть найдена here.

Если проект слишком сложен для такого рода изменений, возможно, было бы лучшим решением для преобразования объектов, возможно, ICryptographyService.

Смежные вопросы