Комментарии 26
Но тут нам говорят, что все не так просто, и пароль для нашей базы данных MyDB должен отвечать некоторым требованиям безопасности.
Пароль на который наложили ограничения, намного хуже, чем полностью рандомный пароль. Ограничения нужны только когда люди придумывают себе пароли.
Полностью согласен. В данном случае пароли пришлось генерировать для MySQL
с плагином validate_password
.
Проблема в том, что пользователи базы данных как микросервисы, так и живые люди, поэтому используются политики.
Вообще, даже для людей, необходимость ограничивать содержание пароля очень спорна.
Потому что требования выполняются (обманываются) просто, а проконтролировать сложно. Например пароль "Qwer12!@" выполняет все требования, но не безопасен.
По мне, намного лучше никаких ограничении не ставить, а людей обучить придумывать пароли такие что легко запоминаются, а трудно отгадываются.
Суть была в том, чтобы автоматически генерировать пароли в питонокоде. Пароли не для себя, а для автоматически созданных пользователей базы данных.
пфф… Вам просто не попадались сервисы, которые требуют пароль не длиннее какого-то кол-ва символов (а значит под капотом скорее всего хранят в plain-text в базе)
Разумное ограничение на длину должно быть, всё же — 50-60 символов хватит на небольшую фразу, пусть 100 (если учесть utf8) — но выше уже как-то слишком много, особенно если учесть что реально рандомный пароль в 16-20 символов напрочь убивает возможность перебора за адекватное время.
Вам просто ещё не попадались люди которые пытаются в качестве пароля отправить строку в пару килобайт, причём иногда даже с кодами ниже пробела — отсюда и ограничения.
А в чем проблема??? Включительно с кодами ниже пробела. Нормальный софт должен обрабатывать такое нормально. И если пароль совпадает, просто предоставить доступ.
И генераторов не пришлось бы особо писать.
Поддерживаю, политики безопасностей для паролей:
- плохи для микросервисов, потому как как сказали выше, полностью случайный пароль лучше чем пароль с ограничениями
- плохи для пользователей, потому что получаем пароли вида
vasya98A!
(~30 знаков lowercase и пробелы)
33 кириллических знака и 6 пробелов? Я знаю этот пароль, и он — словарный.
У Чингиза был лучше. Это и есть Чингиза… но кто-то точно упоминал монгольское сено.
Такие по словарю не подберёшь, но и запомнить несложно после нескольких использований. Так что вряд ли будут записаны на бумажке.
Жаль не весь софт (привет, keepass) умеет генерировать такие.
2. По тому же принципу выбираем прописные буквы и цифры.
3. Остаток заполняем спецсимволами.
4. Тасуем последовательность символов.
Только зачем? Для людей такой пароль будет незапоминаем. Для машины — бесполезен.
Возможно, предсказуемые и легко подбираемые пароли получаются. Ведь предупреждают об этом.
Warning The pseudo-random generators of this module should not be used for security purposes. For security or cryptographic uses, see the secrets
module.
Если не хочется secrets
, тогда лучше использовать класс SystemRandom
.
The random
module also provides the SystemRandom
class which uses the system function os.urandom()
to generate random numbers from sources provided by the operating system.
Хм. А вызывать apg с парой ключей не было-бы проще?
В принципе я за прикладное велосипедостроение, но...
Переписываем генератор паролей