У многих, наверное, возникал вопрос: «как защитить то или иное действие в 1С от несанкционированного доступа»? Можно, конечно, настроить права доступа, ограничить все и вся, но иногда таких средств может быть недостаточно.
На мой взгляд, одним из возможных решений в данном случае может быть использование сервера сценариев Windows WSH плюс аппаратное подтверждение той или иной операции в 1С. Все знают или хотя бы слышали про аппаратную защиту клиент-банков, основанную на действии eToken. На мой взгляд, это не менее эффективный, но зато гораздо более дешевый метод. Из трудозатрат займет не более 30 минут программирования плюс стоимость съемного устройства. Устройством может быть САМАЯ дешевая флешка.
Метод основан на проверке уникального идентификатора устройства- его серийного номера. Достаточно ограничить программно, скажем в процедуре «ПриЗаписи()» нужный нам серийный номер устройства и больше никто не сможет произвести это действие (если, конечно, этот пользователь не обладает навыками программирования и имеет доступ в конфигуратор ). Серийный номер можно указать открыто, так как подделать его, насколько мне известно, не представляется возможным в 99% случаях.
Код проверки серийного номера и некоторых других параметров флеш носителя:
FSO = Новый COMОбъект("Scripting.FileSystemObject"); // создание объекта
Drive = FSO.GetDrive("G"); // создадим объект Drive
// Информация о диске G
МеткаДиска = Drive.VolumeName; // метка устройства
РазмерДиска = Drive.TotalSize/1024; // объем в Кбайтах
СерийныйНомер = Drive.SerialNumber; // серийный номер устройства
Опрос можно производить по всем имеющимся дискам или по какому-то конкретно, как в данном примере.
Так же можно усложнить защиту, добавив на «флешку» определенный файл. Защита той или иной операции в 1С будет осуществляться при чтении нужного файла на «флешке».
«Флешка» может быть с дактилоскопическим сканнером, что дополнительно увеличит степень защиты системы. Первый и второй способ можно комбинировать.
Пример кода:
Путь = "G:\key.txt"; // Путь к файлу
Попытка
Текст = Новый ЧтениеТекста(Путь, КодировкаТекста.UTF8);
Стр = Текст.ПрочитатьСтроку();
Исключение
// действия при отказе
КонецПопытки;
Получаем, что если на носителе нет необходимого файла, то проверка не будет пройдена.
Таким нехитрым способом можно защитить выполнение тех или иных операций в 1С от несанкционированного доступа. Данная проблема весьма актуальна при реализации электронной подписи документов лицом, принимающим решение.
Например, при решении задачи электронной подписи «заявок на расходование средств». Предположим, что руководитель (Генеральный директор, коммерческий директор, финансовый директор, и т.д ) желает достичь высокой оперативности оплаты заявок на расходование средств, но в то же время, хочет контролировать все заявки самостоятельно путем электронной подписи. Метод аутентификации пользователя средствами windows не всегда может удовлетворить желания руководства, так как пароль достаточно просто скомпрометировать. Вероятно, что предложенный мною способ защиты, сможет решить данную проблему.