Как поиск оператора по зашифрованному столбцу в SQL-сервере - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть таблица в sqlserver, в моей таблице есть поле в виде строки, например FirstName (это просто пример!).Это поле "EncryptByPassPhrase" перед вставкой в ​​базу данных.

Before encode: Ali
After  encode: 0x010000001D905174BB7947AE1C600A4AB564A123310F92C21C9A4221

Теперь я буду искать в этом поле, например, я получу все поля, которые содержат символы 'Al'.

Я могу расшифровать это поле и выполнить поиск по:

select * from EncodeTest e
where  dbo.Decoder(e.FirstName) like '%Al%'

Но этот способ очень медленный для многих номеров записи.Пожалуйста, помогите мне для лучшего решения.

Спасибо.


Что я пробовал:

declare @EncodedName varbinary(max)
select @EncodedName =EncryptByPassPhrase('key', cast( @Name as varbinary(max)) )


declare @DecodedName nvarchar(max)
select @DecodedName=convert(varchar(100),DecryptByPassPhrase('key',cast( @EncodedName as varbinary(max)) ))

select * from EncodeTest e
where dbo.Decoder(e.FirstName) like '%Al%'

1 Ответ

0 голосов
/ 13 ноября 2018

Шифрование (безопасность в целом) - это компромисс с удобством. Если вы хотите быть в безопасности, вы должны пожертвовать легким доступом. Если вы хотите быть легкодоступным и быстрым, вы должны пожертвовать безопасностью. Ваша задача как разработчика - найти правильный баланс между ними. В вашем случае, очевидно, что сервер должен расшифровать все ваши данные , чтобы иметь возможность искать нужный вам текст. Если вам нужно искать в зашифрованных данных, то ваш дизайн не работает. Либо найдите другой способ защитить свои данные, либо откажитесь от эффективного поиска.

Я бы сказал, почему вы шифруете имена? База данных уже имеет уровни безопасности для защиты ваших данных ( Прозрачное шифрование данных , права пользователей базы данных и т. Д.), Которые защитят данные от несанкционированного доступа. Вам следует шифровать только действительно конфиденциальную информацию, такую ​​как номера кредитных карт, номера социального страхования и их эквиваленты и т. Д. Злоупотребление шифрованием с использованием его для каждого отдельного поля (или относительно безвредных полей, таких как имена) сделает ваше приложение весьма неудобным и обычно не т стоит усилий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...