1

Здравствуйте.

Скажите, пожалуйста, как рекомендуется хранить конфиденциальные данные типа VARCHAR в СУБД MySQL?

Есть информация о людях (ФИО, адрес, номер моб. телефона и т.д.). Необходимо защитить эти данные с сохранением возможности поиска по LIKE. Какие методы шифрования для этого существуют (желательно с реализацией на PHP)?

3
  • @undestroyer, вы не сможете искать по like после шифрования, вам придется дешифровать каждую строчку.
    – etki
    30 янв 2015 в 17:08
  • @Etki, единственно приемлемыми методами нашел смещение по ключу и замену по словарю, но в наше время это вообще не серьезно
    – atom-22
    30 янв 2015 в 17:14
  • 1
    @atom-22, вы не на то тратите свое время. Даже если вы зашифруете данные в MySQL суперстойким алгоритмом с возможность поиска по LIKE, но оставите дырку в PHP приложении, позволяющую сделать эксплоит -- вся ваша работа пойдет на смарку. 15 мая 2016 в 10:43

1 ответ 1

1

Как вариант можно воспользоваться MySQL-функциями симметричного шифрования, например, AES_ENCRYPT() и AES_DECRYPT(). Не бог весть что, 128-битный ключ, то все-таки защита с возможностью последующей расшифровки данных

INSERT INTO
  tbl
VALUES (
  NULL,
  AES_ENCRYPT('name', UNHEX('F3229A0B371ED2D9441B830D21A390C3')),
  MD5('password')
);

SELECT
  AES_ENCRYPT(name, UNHEX('F3229A0B371ED2D9441B830D21A390C3')) AS name
FROM
  tbl
WHERE id = 1

Пароль можно сразу зашифровать необратимо и при аутентификации сравнивать хэши.

3
  • А LIKE по полям зашифрованным через AES работает?) 15 мая 2016 в 10:44
  • К сожалению, нет, меры безопасности почти всегда приводят к уменьшению удобства. Как вариант, можно держать расшифрованные данные во временных таблицах. Незашифрованные данные хотя бы не будут попадать в дамп. К сожалению, MySQL не самая лучшая база данных для безопасного хранения информации.
    – cheops
    15 мая 2016 в 10:48
  • Значит ваш ответ не верен: Необходимо защитить эти данные с сохранением возможности поиска по LIKE 15 мая 2016 в 11:12

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.