Если я хочу хранить данные о юзерах в базе данных, например их полный адрес, должен ли он храниться зашифрованным? Например, я знаю, что хранится хэш пароля обычно (понимаю, что хэширование != шифрование), про другие данные я в основном видел, что они хранятся в открытом виде. Или всё же надо хранить некоторые данные типо адреса зашифрованными?
Просто понимаю, что если кто-то хакнет БД, то очень легко получит данные о юзерах, в случае если я их не зашифровал
Важен контекст, должны в рамках чего? Местного законодательства, международного законодательства, отраслевых требований и т.д.
т.е. вы должны для начала определить какие данные для вас критичны и насколько. А далее все просто, шифруйте везде(в месте хранения, обработки и передачи), храните минимально возможное время (определите жизненный цикл данных), защищайте свое приложение (патчи, защита периметра, тестирование на проникновение).
Выскажу непопулярную точку зрения.
Если кто то поимел вашу БД, то вы прикрываете известную часть тела.
Делайте 3х звенку
Уровень отображения
Бизнес логика
Уровень доступа к БД
Все что приходит сверху должно логироваться и проходить через сито проверок. Наверх отдается только идентификатор ошибки уникальный для каждого случая. А в базе данных храните хоть открытые пароли, по нормальному эта информация не должна подниматься выше первого уровня.
Я о том, что кто-то получил доступ к серверу, или к самой базе данных. Подключился через mysql команду и тд и тп. Если он получил эти данные, то данные открыты. Или в ситуации, когда на огромном проекте могли допустить прокол в плане SQL Injection..