Хранение паролей базы данных в базе данных - PullRequest
1 голос
/ 22 октября 2011

Мы строим систему, которая будет иметь несколько отдельных клиентских баз данных, клиентам разрешено создавать столько, сколько они захотят. Существует база данных «Admin», в которой хранятся имена пользователей, имена баз данных, имена пользователей и пароли для баз данных на сервере хранятся в базе данных «admin». Я использую эту информацию для подключения к базе данных, выбранной пользователем, поэтому мне нужно иметь возможность получить действительный пароль (я думаю ... верно?).

Так, как лучше всего хранить пароли и даже имена баз данных? Есть ли способ, которым я могу зашифровать, а затем расшифровать, когда мне это нужно?

Заранее спасибо за любую помощь.

Aloha,

Джеймс

Ответы [ 3 ]

0 голосов
/ 22 октября 2011

Я бы НИКОГДА не сохранял пароли в простой / расшифрованной форме.

Если вам действительно нужен доступ к базам данных пользователей, вы можете использовать admin / root с доступом к любой базе данных пользователей на сервере.

0 голосов
/ 26 октября 2011

Итак, мы заключили соглашение о хранении паролей, которое действительно является самой важной частью всего этого:

  1. Обычный текст - это большое нет-нет, потому что, если ваш сервер когда-либо будет взломан, злоумышленник может выпустить список всех имен пользователей и паролей вашего клиента, что плохо по разным причинам.

  2. Зашифрованные пароли плохие, потому что, если ваш сервер когда-либо будет взломан, злоумышленник может просто расшифровать пароли так же, как и ваша программа, и теперь у вас та же проблема, что и у открытого текста.

  3. Криптографические дайджесты, такие как MD5, SHA-1 и даже SHA-512, намного лучше, потому что вы сохраняете и сравниваете только хэшированные пароли, но они все еще плохие, потому что они были разработаны для очень быстрого хеширования данных для Цели целостности данных и подписи. Это делает на удивление легко взломать пароли с помощью атак методом "грубой силы" на современном оборудовании - даже с солью! (См. Статьи об использовании графических процессоров для этой цели!)

Так, где это оставляет нас? Оказывается, дайджесты - это хороший способ, но вы хотите, чтобы они были сложными в вычислительном отношении, чтобы затруднять атаки методом грубой силы. Есть несколько доступных вариантов, но я принял хеш Brcypt в своей профессиональной деятельности.

В качестве дополнительного примечания, пароли должны всегда храниться с солью, чтобы избежать атак радужного стола. Одним из преимуществ Bcrypt является то, что в него встроены процедуры посола, так что вам не нужно об этом беспокоиться.

0 голосов
/ 22 октября 2011

Если вы хотите зашифровать имя базы данных, вы можете использовать такие функции, как AES_ENCRYPT () / AES_DECRYPT () .

Вы НИКОГДА не храните пароли в простом виде.

Вы НИКОГДА не храните пароли в расшифрованной форме.

Вы храните пароль, используя одностороннее шифрование.Чтобы проверить пароль, вы шифруете пароль, который вам дал пользователь, и сравниваете его с тем, что вы сохранили.

Для MySQL вы должны использовать функцию ПАРОЛЬ () .

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