МенеджерСпискаПроверкиРаскрытияПароля.ДобавитьВСписокИзПаролей

Методы · AddToListFromPasswords

Добавляет в список проверки раскрытия пароля значения, удаляя дубликаты. Количество значений после добавления не может превышать 100000.

Синтаксис

ДобавитьВСписокИзПаролей(<СписокПроверкиРаскрытияПароля>)

Примеры платформы

СписокПроверкиРаскрытияПароля = Новый Массив();
СписокПроверкиРаскрытияПароля.Добавить("Qwerty");
СписокПроверкиРаскрытияПароля.Добавить("12345");
СписокПроверкиРаскрытияПароля.Добавить("Password");
ДополнительныеНастройкиАутентификации. СписокПроверкиРаскрытияПароля.ДобавитьВСписокИзПаролей(СписокПроверкиРаскрытияПароля);
Полное описание, параметры и ограничения

МенеджерСпискаПроверкиРаскрытияПароля.ДобавитьВСписокИзПаролей (PasswordCompromiseCheckListManager.AddToListFromPasswords)

МенеджерСпискаПроверкиРаскрытияПароля (PasswordCompromiseCheckListManager)

ДобавитьВСписокИзПаролей (AddToListFromPasswords)

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

Синтаксис:
ДобавитьВСписокИзПаролей(<СписокПроверкиРаскрытияПароля>)
Параметры:

<СписокПроверкиРаскрытияПароля> (обязательный)
Тип: Массив, Строка, ДвоичныеДанные, Поток, ФайловыйПоток, ПотокВПамяти.
Список проверки раскрытия пароля.
Список может быть размещен в массиве строк, в файле, содержащем пароли, разделенные переносом строки (в этом случае указывается имя файла), передан в виде потока или представлен как ДвоичныеДанные.
Описание:

Добавляет в список проверки раскрытия пароля значения, удаляя дубликаты. Количество значений после добавления не может превышать 100000.

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

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

Пример:

СписокПроверкиРаскрытияПароля = Новый Массив();
СписокПроверкиРаскрытияПароля.Добавить("Qwerty");
СписокПроверкиРаскрытияПароля.Добавить("12345");
СписокПроверкиРаскрытияПароля.Добавить("Password");
ДополнительныеНастройкиАутентификации. СписокПроверкиРаскрытияПароля.ДобавитьВСписокИзПаролей(СписокПроверкиРаскрытияПароля);

См. также:
МенеджерДополнительныхНастроекАутентификации, метод УстановитьНастройкиВосстановленияПароля

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

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

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

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

Своя учебная база: заменить список, добавить значения и проверить отсутствие дублей

Сравните замену и добавление дополнительного списка проверки раскрытия пароля. Только три вымышленные строки; пользователей, их пароли и настройки проверки мы не меняем. Изменения списка настоящие и сохраняются в новой собственной базе.

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

Новая собственная файловая база 8.5.1.1343 на своей Windows VM. Только толстый управляемый клиент; настоящий менеджер доступен также на сервере. Четыре настоящих изменения своего сохраняемого списка, никаких реальных операций здесь.

Подготовка

  1. Все дальнейшие действия выполняйте вручную ТОЛЬКО на новой полностью собственной Windows VM, то есть виртуальной машине, с новым профилем и новой пустой базой. Не рабочая УНФ/КА/УТ/БП, не копия с данными и не база другого пользователя. Здесь виртуальная машина, 1С и изменения базы не запускались.

  2. Создайте новую файловую информационную базу 8.5.1.1343 в C:\1c-labs\OwnPasswordList85_0c3b5ea5-b0fc-4d2c-acd2-63d834b87e21\IB. Если каталог/регистрация/база уже существуют, опыт не начинайте и их не очищайте. Строка регистрации должна быть ровно File="C:\1c-labs\OwnPasswordList85_0c3b5ea5-b0fc-4d2c-acd2-63d834b87e21\IB";. Метод возвращает строку как при регистрации: другое написание дает STOP, его не обходят. GUID в пути — метка учебного каталога, НЕ идентификатор самой базы или доказательство владения ею.

  3. В Конфигураторе задайте Имя=УчебныйСписокПаролей85, Версия=0c3b5ea5-b0fc-4d2c-acd2-63d834b87e21, Режим совместимости=Не использовать, Основной режим запуска=Управляемое приложение. Открывайте именно толстый клиент управляемого приложения 8.5.1.1343. База не должна быть сервисной, общей или с разделением данных.

  4. В своей новой конфигурации создайте роль АдминистраторУчебногоСписка85 с полными правами, включая Администрирование. Вручную назначьте ее собственному текущему учебному администратору и проверьте права на стенде. Код проверяет доступность этой конкретной роли, но не выдает права и не доказывает владение ОС/базой. Не включайте привилегированный режим и не переносите настройки пользователей из рабочей базы.

  5. Общие → Общие формы: создайте управляемую СписокПаролей85 и разместите ее в рабочей области начальной страницы. Вставьте полный код в модуль формы. На вкладке Команды добавьте ПроверитьСвойСписок85; в Действие назначьте ПроверитьСвойСписок85(Команда), создайте кнопку с этим ИмяКоманды. Не вызывайте обработчик вручную.

  6. Реквизиты формы: СогласенНаУчебныйСписок85 — Булево, исходно Ложь, ручной флажок; Количество85 — Число (длина 15, точность 0), исходно 0; Состояние85 — Строка. Полям количества и состояния задайте ТолькоПросмотр=Да. Начальный 0 не доказывает, что список прочитан или пуст: подтверждением служит итоговый текст Проверено и фактические проверки.

  7. Перед нажатием кнопки прочитайте, что меняется: сначала заменяется, затем дополняется дополнительный список именно этой новой базы. Поставьте флажок только как ее владелец. Согласие используется один раз до получения менеджера и чтения/записи списка. Непустой исходный список дает STOP без записи и без показа его значений.

  8. DEMO_ONLY_A_9e106c87, DEMO_ONLY_B_9e106c87 и DEMO_ONLY_C_9e106c87 — открытые вымышленные метки, а НЕ пароли для реального входа. Не заменяйте их реальными паролями. Строки передаются массивами, файлы и потоки не нужны; чтение списка вызывается без параметра, чтобы получить Массив, а не записывать данные в файл.

  9. Менеджер берется из ДополнительныеНастройкиАутентификации.СписокПроверкиРаскрытияПароля; оба свойства доступны только для чтения. Конструктора менеджера нет. Создание списка по строкам дает настоящие сохраняемые значения платформы. Они не угадываются, не вычисляются сторонним способом, не обрезаются и не разбиваются по переносам строк.

  10. После каждого действия список перечитывается полностью: проверяются типы Массив/Число/непустая Строка, длина, отсутствие дублей и сохранение каждого целого значения. Порядок элементов не обещается. Работайте в одном спокойном собственном сеансе без других программ или сеансов, меняющих этот список. Перед каждой записью снова сверяется весь собственный снимок; это не атомарная блокировка и не защита от записи другим сеансом между проверкой и действием.

  11. Записывающие методы значения не возвращают: не присваивайте им выдуманный Булево-результат. До каждого вызова состояние НЕИЗВЕСТНО, после него требуется настоящее чтение. При исключении или несовпадении результат неизвестен, остается STOP; повтор, очистка и откат не автоматизированы. Три собственных значения намеренно остаются в новой базе.

&НаКлиенте
Перем ОпытИспользован85;

&НаКлиенте
Процедура ПроверитьСвойСписок85(Команда)
    Попытка
        Если ОпытИспользован85 <> Неопределено Тогда
            ВызватьИсключение "Этот экземпляр уже использован: повтор запрещен";
        КонецЕсли;
        #Если ТолстыйКлиентУправляемоеПриложение Тогда
            Если СтрокаСоединенияИнформационнойБазы() <> "File=""C:\1c-labs\OwnPasswordList85_0c3b5ea5-b0fc-4d2c-acd2-63d834b87e21\IB"";" Тогда
                ВызватьИсключение "Не совпали учебная конфигурация, версия или регистрация своей файловой базы";
            КонецЕсли;
        #Иначе
            ВызватьИсключение "Нужен толстый клиент управляемого приложения 8.5.1.1343";
        #КонецЕсли;
        Доступ = РольДоступна("АдминистраторУчебногоСписка85");
        Если ТипЗнч(Доступ) <> Тип("Булево") Или Доступ <> Истина
            Или ТипЗнч(Команда) <> Тип("КомандаФормы") Или Команда <> Команды.Найти("ПроверитьСвойСписок85") Тогда
            ВызватьИсключение "Нет своей назначенной роли или настоящей команды формы";
        КонецЕсли;
        Если ТипЗнч(СогласенНаУчебныйСписок85) <> Тип("Булево") Или СогласенНаУчебныйСписок85 <> Истина Тогда
            ВызватьИсключение "Сначала подтвердите изменение списка своей новой учебной базы";
        КонецЕсли;
        ОпытИспользован85 = Истина;
        СогласенНаУчебныйСписок85 = Ложь;
        Количество85 = 0;
        Менеджер85 = ДополнительныеНастройкиАутентификации.СписокПроверкиРаскрытияПароля;
        Если ТипЗнч(Менеджер85) <> Тип("МенеджерСпискаПроверкиРаскрытияПароля") Тогда
            ВызватьИсключение "Не получен настоящий менеджер платформы";
        КонецЕсли;
        Пустой = Новый Массив;
        ПаролиАБ = Новый Массив;
        ПаролиАБ.Добавить("DEMO_ONLY_A_9e106c87");
        ПаролиАБ.Добавить("DEMO_ONLY_B_9e106c87");
        ПаролиАБ.Добавить("DEMO_ONLY_A_9e106c87");
        Состояние85 = "НЕИЗВЕСТНО: замена списка еще не подтверждена";
        ПрочитатьСвойСписок85(Менеджер85, 0, Пустой);
        Менеджер85.УстановитьСписокИзПаролей(ПаролиАБ);
        Пара = ПрочитатьСвойСписок85(Менеджер85, 2);
        ПаролиС = Новый Массив;
        ПаролиС.Добавить("DEMO_ONLY_C_9e106c87");
        ПаролиС.Добавить("DEMO_ONLY_C_9e106c87");
        Состояние85 = "НЕИЗВЕСТНО: добавление третьего значения еще не подтверждено";
        ПрочитатьСвойСписок85(Менеджер85, 2, Пара);
        Менеджер85.ДобавитьВСписокИзПаролей(ПаролиС);
        Тройка = ПрочитатьСвойСписок85(Менеджер85, 3);
        Для Каждого Хеш Из Пара Цикл
            Если Тройка.Найти(Хеш) = Неопределено Тогда
                ВызватьИсключение "После добавления потеряно одно из своих двух значений";
            КонецЕсли;
        КонецЦикла;
        ХешиС = Новый Массив;
        Для Каждого Хеш Из Тройка Цикл
            Если Пара.Найти(Хеш) = Неопределено Тогда
                ХешиС.Добавить(Хеш);
                ХешиС.Добавить(Хеш);
            КонецЕсли;
        КонецЦикла;
        Если ХешиС.Количество() <> 2 Тогда
            ВызватьИсключение "Не выделено ровно одно свое новое значение с повтором";
        КонецЕсли;
        Состояние85 = "НЕИЗВЕСТНО: замена сохраняемыми значениями еще не подтверждена";
        ПрочитатьСвойСписок85(Менеджер85, 3, Тройка);
        Менеджер85.УстановитьСписокИзСохраняемыхЗначенийПаролей(Пара);
        ВосстановленнаяПара = ПрочитатьСвойСписок85(Менеджер85, 2, Пара);
        Состояние85 = "НЕИЗВЕСТНО: добавление сохраняемого значения еще не подтверждено";
        ПрочитатьСвойСписок85(Менеджер85, 2, ВосстановленнаяПара);
        Менеджер85.ДобавитьВСписокИзСохраняемыхЗначенийПаролей(ХешиС);
        Итог = ПрочитатьСвойСписок85(Менеджер85, 3, Тройка);
        Количество85 = Итог.Количество();
        Состояние85 = "Проверено:0→2→3→2→3, полные списки совпали, дубликатов нет. Свой список оставлен";
    Исключение
        ОпытИспользован85 = Истина;
        СогласенНаУчебныйСписок85 = Ложь;
        Состояние85 = "STOP: результат не подтвержден, повторов/уборки/отката нет. " + ОписаниеОшибки();
    КонецПопытки;
КонецПроцедуры

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

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

  1. Подготовьте новый стенд, роль, конфигурацию, форму и кнопку по инструкции. На открытой форме один раз подтвердите согласие и нажмите ПроверитьСвойСписок85.

  2. Код получает настоящий менеджер и проверяет исходный список 0. Затем устанавливает массив [A, B, A]; одинаковое A не становится отдельным значением. Чтение должно вернуть два различных сохраняемых значения.

  3. Массив [C, C] добавляет третье значение. Проверяются число 3, отсутствие дублей, сохранение всей пары и ровно одно новое значение. Именно оно сохраняется для последующего добавления.

  4. Установка пары ранее полученных сохраняемых значений заменяет тройку: чтение должно показать точную свою пару и число 2. Добавление собственного третьего значения дважды возвращает полную исходную тройку без дублей.

  5. Проверьте Количество85 и Состояние85. После полного подтверждения ожидаются фактическое число 3 и текст Проверено:0→2→3→2→3. Список остается в новой базе; пользователей, политики входа и включение проверки код не изменяет.

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

  1. Без согласия: в новом экземпляре не ставьте флажок и нажмите кнопку. Ожидается STOP до получения менеджера, чтения и записи списка; текст Проверено не появляется. Не пытайтесь продолжить этот экземпляр после установки флажка.

  2. Нормальный опыт в новой пустой базе: с согласия нажмите кнопку один раз. Ожидаются Количество85=3 и полный текст Проверено:0→2→3→2→3. В отладчике посмотрите Пара, Тройка и Итог: непустые строки, без дублей; Итог содержит всю прежнюю тройку, порядок не существенен.

  3. Дубликаты уже включены в пример: A передается дважды, затем C дважды, затем собственное третье сохраняемое значение дважды. Каждый этап подтверждает фактическое число 2 или 3, а не количество входных строк.

  4. Повтор кнопки в том же экземпляре после успеха или STOP должен дать STOP без новой записи. Заново открытая форма в базе с оставленной тройкой также остановится на начальном условии 0, ничего не заменяя и не показывая значения. Для повторения готовят новую собственную пустую базу, не очищают чужую.

  5. Ошибка подготовки: только на отдельном новом учебном стенде используйте другую метку конфигурации, другую регистрацию или текущего собственного пользователя без назначенной учебной роли. Ожидается STOP до чтения/записи. Если исключение случилось во время метода записи, не называйте это ни успехом, ни гарантированным откатом: исход не подтвержден.

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

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

Будущий ручной результат: в своей новой базе остаются три значения, полученные платформой только из трех вымышленных строк. При будущем успешном запуске должны подтвердиться все пять состояний 0→2→3→2→3 и полное содержимое массивов. Сейчас выполнена только статическая и документальная проверка; запуск в 1С не проверялся.

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

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

  2. Число 3 само по себе недостаточно: список может содержать другие значения или повторы. Проверяются все целые строки и их принадлежность своему ранее полученному снимку.

  3. ПолучитьСписокСохраняемыхЗначенийПаролей с именем файла или потоком имеет другой путь результата и записывает данные. Здесь этот параметр отсутствует; неожиданный Неопределено дает STOP.

  4. РольДоступна проверяет назначение конкретной роли, а не владение ОС/базой. Имя, версия и File-маркер также только ограничивают ожидаемую подготовку, не являются удостоверением собственности.

  5. Не копируйте привилегированный режим и зависимые процедуры рабочей УНФ. Не меняйте пользователя, его пароль, алгоритм хранения, политику или включение проверки ради этого опыта.

  6. После ошибки записи исход может быть неизвестен. Состояние STOP не доказывает отсутствие изменения; автоматического удаления, отката и повторной попытки нет.

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

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

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

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

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