Код выводит не установленные пароли, а так же очень простые (1, 123) пароли пользователей. Список можно пополнять.
Сообщить("Проверка не безопасных паролей");
Количество = 0;
СоответствиеПаролей = Новый Соответствие();
СоответствиеПаролей.Вставить("2jmj7l5rSw0yVb/vlWAYkK/YBwk=", "Пустой пароль");
СоответствиеПаролей.Вставить("", "Пустой пароль");
СоответствиеПаролей.Вставить(Неопределено, "Пустой пароль");
СоответствиеПаролей.Вставить("NWoZK3kTsExUV00Ywo1G5jlUKKs=", "1");
СоответствиеПаролей.Вставить("QL0AFWMIX8NRZTKeof9cXsvbvu8=", "123");
Для Каждого Пользователь Из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Если НЕ Пользователь.АутентификацияСтандартная Тогда
Продолжить;
КонецЕсли;
Значение = Лев(Пользователь.СохраняемоеЗначениеПароля, Найти(Пользователь.СохраняемоеЗначениеПароля, ",") - 1);
//Сообщить(""+Пользователь+": "+Значение);
//Прервать;
Описание = СоответствиеПаролей.Получить(Значение);
Если НЕ Описание = Неопределено Тогда
Сообщить("" + Пользователь + ": " + Описание);
Количество = Количество + 1;
КонецЕсли;
КонецЦикла;
Сообщить("Найдено паролей: " + Количество);
Выводит результат:
Проверка не безопасных паролей
тест - 1: 123
тест - 10 1
Сотрудник_АК: Пустой пароль
Найдено паролей: 3
Рекомендую регламентное задание для запрещения доступа для таких пользователей.
Без упоминания аббревиатур SHA-1 и Base64 полезность публикации околонулевая.
Не раскрыто, как получить ключ соответствия для значения «111», «12345» и других.
Включить проверку сложности паролей в конфигураторе и установить минимальную длину не позволяет какая-то религия?
(5) это не всегда возможно, да и существующих пользователей не обезопасит, а только новых
(3) в целях безопасности и возможности умышленного восстановления исходных паролей это не упоминалось
(4) как вариант можно установить нужный пароль пользователю а затем вывести сохраняемое значение раскомментировав
//Сообщить(«»+Пользователь+»: «+Значение);
//Прервать;
и получить исходное значение.
Программной генерации умышленно не описывал для защиты от школохакеров.
Публикация призвана обезопастить базу, а не познать «тонкости» (с «тонкостями» безопасности инфостарт не разрешает публиковаться)
(8)
//Сообщить(«»+Пользователь+»: «+Значение);
//Прервать;
и получить исходное значение.
Не получится. Почему — написано в синтакс-помощнике.
(9) там не так написано и прекрасно получается, не ленитесь, попробуйте
(10) зачем? Я знаю, как получить эту строку вообще без 1С.
Спасибо у меня все получилось
(7) Думаю, если кому нужно — найдут. Да и раньше находили — напрямую из SQL базы. За саму мысль, что надо сделать подобную проверку и установить требования к сложности паролей — спасибо!
(11) здесь никто не меряется знаниями основ безопасности, полученными гуглением. Основная цель описана пользователем в сообщении (13)