Глобальный контекст.ПолучитьМинимальнуюДлинуПаролейПользователей

Методы · GetUserPasswordMinLength

Получает ограничение на минимальную длину паролей, которое установлено для пользователей информационной базы.

Синтаксис

ПолучитьМинимальнуюДлинуПаролейПользователей()
Полное описание, параметры и ограничения

Глобальный контекст.ПолучитьМинимальнуюДлинуПаролейПользователей (Global context.GetUserPasswordMinLength)

Глобальный контекст (Global context)

ПолучитьМинимальнуюДлинуПаролейПользователей (GetUserPasswordMinLength)

Доступен, начиная с версии 8.1.

Синтаксис:
ПолучитьМинимальнуюДлинуПаролейПользователей()
Возвращаемое значение:
Тип: Число.

Описание:

Получает ограничение на минимальную длину паролей, которое установлено для пользователей информационной базы.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Проверить настройки длины, сложности и истории паролей в своём пустом стенде

Административный учебный опыт: получить реальные исходные ограничения, временно установить длину12, сложность и историю3, проверить чтением и восстановить каждое исходное значение независимо.

Где и как запускать

Полный модуль управляемой формы в новом пустом стенде; административные setter/getter на сервере, независимое восстановление первоначальных значений.

Подготовка

  1. Создайте с нуля отдельную пустую конфигурацию УчебнаяПарольнаяПолитика85 на платформе8.5.1.1343; управляемое приложение, без разделителей данных, расширений, обменов и подписок. Не переименовывайте рабочую базу под этот пример.

  2. Это административные настройки всей учебной информационной базы, не значения в локальной структуре. Только один заранее созданный учебный администратор с правом Администрирование; ни одного рабочего пользователя или рабочего пароля.

  3. Используйте отдельную новую файловую базу и единственный сеанс Предприятия. На время опыта исключите другие сеансы, повторную аутентификацию, фоновые входы и изменение паролей. Предварительно проверьте это вручную, а не полагайтесь только на имя конфигурации.

  4. Обработки → ОпытПарольнойПолитики85 → управляемая основная форма. Добавьте реквизит ПодтверждаюПустойСтенд типа Булево, исходно Ложь, и покажите его флажком. Для каждого урока используйте отдельную обработку либо целиком замените модуль формы.

  5. Добавьте команду с именем указанной клиентской процедуры, назначьте её действие и кнопку. Основной код — полный модуль формы; обе процедуры/функции уже показаны и не вставляются внутрь другого обработчика.

  6. Нажмите F7 и обновите только новый стенд. runtimeVerifiedScenarios=0: здесь примеры не запускались, пользователей и пароли не меняли; выполнены только статические проверки.

  7. Перед своим ручным запуском изучите весь блок восстановления. Исходные значения читаются до первой записи; после опыта восстанавливаются именно они, а не справочные значения по умолчанию.

  8. Установите флажок только после подготовки стенда. Клиент передаёт подтверждение, сервер повторно проверяет его. Это защита от случайного запуска, не универсальная авторизация для production.

  9. Не вводите и не выводите пароли. Код не создаёт пользователей, не вызывает проверку раскрытия конкретного пароля, не делает входов и не проверяет реальную реакцию диалогов аутентификации.

  10. Если восстановление не подтвердилось, не повторяйте опыт и не входите другим пользователем: администратор должен вручную сверить только настройки отдельного учебного стенда. Принудительное завершение процесса не гарантирует выполнение восстановления.

  11. Команда ПроверитьДлинуИСложность85; серверная функция ПроверитьСвоиОграничения вызывается только этой кнопкой.

&НаКлиенте
Процедура ПроверитьДлинуИСложность85(Команда)
    Если Не ПодтверждаюПустойСтенд Тогда
        ВызватьИсключение "Подтвердите работу только в своём новом пустом стенде";
    КонецЕсли;
    Сообщить(ПроверитьСвоиОграничения(ПодтверждаюПустойСтенд));
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьСвоиОграничения(Подтверждение)
    Если ТипЗнч(Подтверждение) <> Тип("Булево") Тогда
        ВызватьИсключение "Нужно явное подтверждение нового пустого стенда";
    КонецЕсли;
    Если Не Подтверждение Тогда
        ВызватьИсключение "Только новый пустой стенд УчебнаяПарольнаяПолитика85 с отдельным согласием";
    КонецЕсли;
    ИсходнаяДлина = ПолучитьМинимальнуюДлинуПаролейПользователей();
    ИсходнаяСложность = ПолучитьПроверкуСложностиПаролейПользователей();
    ИсходнаяИстория = ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних();
    ОшибкаОпыта = "";
    Попытка
        УстановитьМинимальнуюДлинуПаролейПользователей(12);
        УстановитьПроверкуСложностиПаролейПользователей(Истина);
        УстановитьОграничениеПовторенияПаролейПользователейСредиПоследних(3);
        Если ПолучитьМинимальнуюДлинуПаролейПользователей() <> 12
            Или Не ПолучитьПроверкуСложностиПаролейПользователей()
            Или ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних() <> 3 Тогда
            ВызватьИсключение "Учебные ограничения не подтвердились повторным чтением";
        КонецЕсли;
    Исключение
        ОшибкаОпыта = ОписаниеОшибки();
    КонецПопытки;
    Попытка
        УстановитьМинимальнуюДлинуПаролейПользователей(ИсходнаяДлина);
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Не восстановлена длина: " + ОписаниеОшибки();
    КонецПопытки;
    Попытка
        УстановитьПроверкуСложностиПаролейПользователей(ИсходнаяСложность);
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Не восстановлена сложность: " + ОписаниеОшибки();
    КонецПопытки;
    Попытка
        УстановитьОграничениеПовторенияПаролейПользователейСредиПоследних(ИсходнаяИстория);
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Не восстановлена история: " + ОписаниеОшибки();
    КонецПопытки;
    Попытка
        Если ПолучитьМинимальнуюДлинуПаролейПользователей() <> ИсходнаяДлина
            Или ПолучитьПроверкуСложностиПаролейПользователей() <> ИсходнаяСложность
            Или ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних() <> ИсходнаяИстория Тогда
            ВызватьИсключение "Исходные ограничения ещё не восстановлены";
        КонецЕсли;
    Исключение
        ОшибкаОпыта = ОшибкаОпыта + " Проверка восстановления: " + ОписаниеОшибки();
    КонецПопытки;
    Если ОшибкаОпыта <> "" Тогда
        ВызватьИсключение ОшибкаОпыта;
    КонецЕсли;
    Возврат "Длина12, сложность и история3 проверены чтением настроек. Исходные настройки восстановлены. Пароли не изменялись.";
КонецФункции

Разбор по шагам

  1. Сначала читаются текущие длина, сложность и размер истории; если чтение не удалось, запись ещё не начинается.

  2. Три setter-метода применяют учебные значения к реальной собственной базе. Getter-методы проверяют каждое значение; несовпадение вызывает исключение.

  3. При включённой сложности действует минимум7 символов либо более высокая настроенная длина. Здесь12 выше7, поэтому именно12 остаётся ограничением длины.

  4. Исключение опыта сохраняется в строке. После него предпринимаются все три независимые попытки вернуть первоначальные значения.

  5. Контрольное чтение сравнивается со снимком, а не с числами5/0 из справки. Ошибки записи и восстановления складываются в итоговое исключение.

  6. Успех означает проверку и восстановление настроек. Создание пользователей, смена паролей и проверка повторного пароля в этом опыте не выполняются.

Как проверить результат

  1. Во время опыта повторное чтение подтверждает12, Истина и3.

  2. После опыта три значения равны первоначальным, даже если первоначальная политика отличается от значений по умолчанию.

  3. Если хотя бы одна попытка восстановления не удалась, код не выводит сообщение об успехе и сообщает исходную ошибку вместе с ошибками восстановления.

  4. Ни пароль, ни хеш, ни имя рабочего пользователя не выводятся; в опыте нет создания пользователя или операции аутентификации.

Ожидаемый результат

Учебные ограничения подтверждены чтением и исходная политика восстановлена; пользовательские пароли не менялись.

На что обратить внимание

  1. Настройки действуют на всю информационную базу. Изменение записывается вне локальных переменных; не используйте код в рабочей базе или фоновом задании.

  2. Восстановление после обработанного исключения не гарантирует восстановление при падении процесса, отключении питания или потере соединения. Поэтому нужен отдельный пустой стенд, а не production.

  3. Каждая попытка восстановления независима, ошибки не замалчиваются. Даже успешное повторное чтение не превращает незавершённую миграцию пользовательских данных в откат.

  4. Значения этого опыта иллюстрируют API и проверки, а не рекомендуемую политику безопасности организации. Не переносите их как готовый стандарт.

  5. Проверка getter-методом доказывает только текущее значение настройки. Она не доказывает проверку конкретного пароля, историю ранее использованных паролей или реальный сценарий входа.

  6. В справочнике runtimeVerifiedScenarios=0. Перед самостоятельным использованием нужны F7 и контролируемый ручной опыт в собственном стенде; фактический запуск здесь не выполнялся.

  7. По справке правила длины/сложности применяются при создании или изменении пароля и отдельных изменениях стандартной аутентификации. Это не автоматическая перепроверка всех уже сохранённых паролей.

  8. История3 не означает, что у нового пользователя уже есть три предыдущих пароля. Этот урок проверяет настройку истории, а не наполняет её.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Прочитать требования к паролям, не проверяя пароль пользователя

Чтение минимальной длины, сложности, запрета раскрытых паролей и истории — это чтение политики, не проверка реального секрета.

Где и как запускать

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

Подготовка

  1. Используйте только отдельную конфигурацию УчебнаяКонфигурацияСинтаксиса. Создайте серверный общий модуль УчебнаяПолитика с флагом Сервер, без флага Привилегированный; вставьте полный модуль выбранного урока и вызовите ВыполнитьПример из собственной серверной команды.

  2. Первые четыре урока вызывают реальные штатные getters в серверном модуле. Выбранные страницы справки не задают для этих методов отдельного требования Администрирование; это не обещание отсутствия внутренних проверок прав. Любая фактическая ошибка сохраняется в ОписаниеОшибки и останавливает опыт без повышения прав, повторного вызова или подстановки значений. Пятый урок создаёт только новый объект в памяти и не читает текущие настройки.

  3. Первые четыре урока только читают настройки. Пятый создаёт новый черновик БлокировкаСеансов в памяти. Ни один урок не вызывает УстановитьБлокировкуСеансов или изменение политики паролей.

  4. Не вводите пароли пользователей и коды разрешения действующих блокировок. Учебник не проверяет чей-либо пароль, не отправляет его на внешний сервис и не выводит код /uc.

  5. Секунды для сроков действия паролей сверены по вашему реальному модулю УНФ: C:\claude\UNF\UNF_XML\CommonModules\ПользователиСлужебный\Ext\Module.bsl, процедура ЗаполнитьНастройкиИзПолитикиПаролейПользователей, строки 3197–3233. Там используется деление на 24×60×60. Урок не вызывает этот модуль и не зависит от БСП.

  6. Фактические настройки и административные ограничения зависят от вашей собственной базы. BSL-примеры не исполнялись в 1С автоматически.

Процедура ВыполнитьПример() Экспорт
    Попытка
        МинимальнаяДлина = ПолучитьМинимальнуюДлинуПаролейПользователей();
        Сложность = ПолучитьПроверкуСложностиПаролейПользователей();
        ЗапретРаскрытых = ПолучитьПроверкуРаскрытияПаролейПользователей();
        История = ПолучитьОграничениеПовторенияПаролейПользователейСредиПоследних();
        Действие = ПолучитьДействиеПриНесоответствииПаролейПользователейТребованиямПриАутентификации();
        Алгоритм = ПолучитьТипАлгоритмаХешированияПаролейПользователей();
        Сообщить(ТипЗнч(МинимальнаяДлина) = Тип("Число"));
        Сообщить(ТипЗнч(Сложность) = Тип("Булево"));
        Сообщить(ТипЗнч(ЗапретРаскрытых) = Тип("Булево"));
        Сообщить(ТипЗнч(История) = Тип("Число"));
        Сообщить("Минимальная длина своей политики: " + Строка(МинимальнаяДлина));
        Сообщить("Требование сложности включено: " + Строка(Сложность));
        Сообщить("Ограничение раскрытых паролей включено: " + Строка(ЗапретРаскрытых));
        Сообщить("Ограничение повторения среди последних: " + Строка(История));
        Сообщить("Действие при несоответствии: " + Строка(Действие));
        Сообщить("Настроенный алгоритм хеширования: " + Строка(Алгоритм));
    Исключение
        ВызватьИсключение "СТОП: штатное чтение настроек собственной базы не завершено: " + ОписаниеОшибки();
    КонецПопытки;
КонецПроцедуры

Разбор по шагам

  1. Проверить собственную конфигурацию перед штатным чтением. При любой ошибке сохранить фактическую диагностику и остановить опыт, не объясняя каждый отказ отсутствием административного права.

  2. Получить длину и количество последних паролей как числа, два требования как булевы значения.

  3. Отдельно получить действие при входе и выбранный алгоритм хеширования.

  4. Подписать фактические значения; не заменять нули или Ложь придуманными рекомендуемыми настройками.

  5. Не спрашивать пароль и не вызывать проверку раскрытия конкретного пароля: этот опыт касается только состояния настроек.

Как проверить результат

  1. Четыре проверки типов Истина и фактические настройки собственной базы.

  2. Ни один пароль, хеш пользователя или список его прежних паролей не читается и не выводится.

Ожидаемый результат

Реальная диагностическая задача по безопасному чтению шести независимых параметров политики.

На что обратить внимание

  1. Включённая проверка сложности не доказывает, что каждый текущий пароль уже безопасен.

  2. ПолучитьПроверкуРаскрытияПаролейПользователей возвращает флаг политики, не результат поиска конкретного пароля в утечках.

  3. Имя алгоритма не является хешем пользователя; изменение алгоритма в этом уроке не выполняется.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.