Я работаю над проектом ASP.Net MVC 3, в котором я хотел бы зашифровать все электронные письма, хранящиеся в базе данных, для дополнительной защиты на случай, если какой-нибудь хакер когда-нибудь получит доступ к БД, и мне было интересно, как лучше всего это сделатьдля достижения этой цели.
Я читал немного о пользовательских подшивках моделей, но это для связи между контроллером и представлением.Я не уверен, что это то, что я хочу, так как мне может понадобиться доступ к незашифрованным адресам электронной почты в коде (на уровне обслуживания, где у меня есть бизнес-правила). Так что я бы предпочел, чтобы шифрование / дешифрование происходило автоматически при сохранении / загрузке модели из базы данных, и я не знаю, как это сделать.
Мымогу представить, что у меня есть эта модель POCO:
public partial class Contact
{
public virtual int ContactId { get; set; }
public virtual string Name { get; set; }
public virtual string Email { get; set; }
}
Мне нужен способ зашифровать свойство Email, когда оно сохраняется в базе данных, и расшифровывать, когда оно загружается из базы данных.
Один из способов сделать это - иметь дополнительное свойство UnencryptedEmail в моей модели контактов, которое будет содержать метод получения и установки, который расшифровывает и шифрует свойство электронной почты, но я считаю, что добавление дополнительного свойства не такочистить решение.
Если по какой-то причине использование собственного IModelBinder является подходящим способом, пожалуйста, дайте мне знать, почему и скажите мне, как его применить, только для свойства Email модели Contact.,До сих пор я видел только реализации для применения преобразований ко всем свойствам определенного типа данных.