Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2313

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
1.4 Mб
Скачать

Range:="Range("Al:A4"), Password:="secret"

'Сообщение пользователю об имени и адресе диапазона

With wksOne.Protection.AllowEditRanges.Item(1) MsgBox "Название диапазона: " & .Title MsgBox "Адрес диапазона: " & .Range.Address End With

10.2. Доступ к документам и коду VBA

Акцентируем внимание на защите документов Word и Excel и интеллектуальной собственности, представленной процедурами VBA в проектах.

10.2.1. Защита паролем документов Word и Excel

Установить пароль для доступа к документу или содержащейся в нем информации — один из способов защиты в приложениях Word и Excel. В приложениях Frontpage, Outlook

и PowerPoint такой возможности не существует, так как документы этих приложений (Web-узлы, электронные сообщения и презентации) изначально предназначены для широкой аудитории, и установка пароля отсечет большую ее часть от возможности ознакомления с этими документами.

В приложениях Word и Excel можно установить два типа пароля для доступа к документу:

пароль для открытия документа;

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

Для любого документа можно задать один или сразу оба пароля. Следует использовать команду > Файл > Сохранить как основного меню приложения или воспользоваться методом saveAs приложения при установке паролей в коде VBA (приложения Office XP поддерживают и такой способ).

Команда Сохранить как (рис. 10.6) отображает общее для приложений Office XP диалоговое окно Сохранение документа, нажатие на кнопке Сервис в панели команд которого приводит к отображению раскрывающегося меню. В меню следует выбрать команду Параметры безопасности при рабо-

163

Рис. 10.6. Метод saveAs приложения при установке паролей в коде VBA

Рис. 10.7. Раскрывающееся меню по нажатию кнопки Сервис

команды Сохранить как

164

те в приложении Word или команду Общие параметры в приложении Excel для отображения соответственно диалоговых окон Безопасность или Параметры сохранения, в которых в поля пароль для открытия файла и пароль разрешения за-

писи диалогового окна Безопасность приложения Word или поля Пароль для открытия и Пароль для изменения диало-

гового окна Параметры сохранения приложения Excel ввести значения соответствующих паролей.

В приложениях Office XP добавлена возможность задания типа шифрования документа, который устанавливается в диалоговом окне Тип шифрования (рис. 10.8), отображаемом при нажатии кнопки Дополнительно, расположенной в диало-

говых окнах Безопасность и Параметры сохранения.

Рис. 10.8. Диалоговое окно "Тип шифрования"

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

При вводе пароля любой вводимый символ отображается в виде звездочки (*). Поэтому до начала его набора на клавиатуре следует правильно установить используемую раскладку и регистр клавиатуры.

165

В приложениях Word и Excel установить пароли открытия документа и разрешения записи можно не только во время выполнения команды Сохранить как. Команда Сервис > Параметры этих приложений отображает диалоговое окно Па-

раметры, на вкладке Безопасность (Сохранение – в 2000)

которого можно в любой момент задать или удалить пароли на открытие документа или разрешение записи.

Иногда возникает необходимость установить пароли защиты документа из процедуры VBA. Подобная ситуация может возникнуть, например, если системный администратор запретил установку паролей документов через команды интерфейса приложения Office. Этот запрет не влияет на возможность установки паролей для документов из кода VBA, в котором для этих целей следует использовать команду saveAs активного в данный момент документа.

'В приложении Word With ActiveDocument

.SaveAs FileName:="C:\Temp\l.doc", _ Password:="123", WritePassword:="456"

End With

‗В приложении Excel With ActiveWorkbook

.SaveAs Filename:="C:\Temp\l.xls", _ Password:="123", WriteResPassword:="456"

End With

Обратите внимание на небольшие отличия в названиях ключевых параметров, задающих пароль разрешения записи в приложениях Word и Excel, a также на задание в них активных документов. Аналогичную картину мы будем наблюдать и при открытии защищенных паролем документов методом open в этих двух приложениях.

166

Документы, защищенные паролем открытия и разрешения записи, сохраняются в закодированном виде, чтобы исключить возможность доступа к паролю с помощью сторонних средств просмотра содержимого файла, например, редактора Far. Для этих целей приложения Office XP по умолчанию используют симметричный алгоритм шифрования RC4, совмес-

тимый с документами Office 97/Office 2000.

В случае задания паролей через код VBA для обеспечения секретности следует запретить доступ к процедурам VBA.

Чтобы открыть документ, защищенный паролем открытия, нужно ввести правильный пароль в диалоговое окно Пароль, появляющееся при попытке открыть файл подобного документа. Если для документа установлен второй тип защиты, то после введения верного пароля открытия приложение потребует ввести пароль разрешения записи еще в одном диалоговом окне Пароль. Можно вообще не задавать пароль для модификации документа и открыть его только для чтения, нажав кнопку Только чтение. В этом случае позволяется осуществлять разнообразные его изменения, но сохранить их в этом же файле будет невозможно. Любая подобная попытка будет отвергнута приложением Office XP с отображением сообщения о том, что документ открыт только для чтения. Правда, его можно сохранить под другим именем, причем все установленные пароли в первом документе будут автоматически перенесены и во вновь создаваемый.

Следует быть внимательным с парольной защитой. Если пароль забыт или утерян, то не существует способов открытия документов в приложении. Рекомендуется записывать их на бумаге и хранить в надежном месте.

При открытии защищенного паролем документа методом Open приложения Word следует задать правильные значения установленных паролей открытия и разрешения записи.

Public Sub openDoc()

On Error GoTo err_Handle 'Перехват ошибок

Documents.Open FileName:="C:\Temp\l.doc", _

167

PasswordDocument:="", _ WritePasswordDocument:="" Open_End:

Exit Sub err Handle:

'Здесь следует обрабатывать ошибки ввода пароля и 'организовывать собственный диалог ввода паролей

MsgBox "Ошибка №: " & Err.Number & vbCrLf _ & Err.Description

Resume open_End End Sub

10.2.2. Защита кода VBA

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

VBA:

установить пароль для просмотра кода VBA в документах и шаблонах — это называется блокировкой проекта VBA, при которой код выполняется, но просмотр его исходных текстов невозможен;

реализовать свое решение в виде дополнительного - подключаемого к приложению модуля СОМ, написанного на языке Visual Basic 6.0 и скомпилированного в динамически подключаемую библиотеку (DLL), что исключает возможность его модификации;

воспользоваться возможностями операционной системы для защиты и управления доступом к файлам документов.

168

Рассмотрим способ защиты проектов VBA — их блокировку. Блокировка проекта аналогична защите документа от его несанкционированного открытия. При этом устанавливается пароль, который следует ввести при открытии проекта в редакторе VBA. Этот способ защиты интеллектуальной собственности использует один и тот же алгоритм.

Блокировать можно проект VBA, содержащийся в документе и шаблоне, причем блокируется весь проект, а не отдельные его части. Это означает, что без введения правильного пароля будет невозможен доступ не только к кодам в созданных пользователем модулях, но и к кодам, размещаемым в стандартных модулях проекта, включая модули ThisDocumenu в приложении Word, этакнига и Лист в приложении Excel и ThisOutlookSession в Приложении Outlook.

Для блокировки проекта следует:

1.открыть документ, содержащий код проекта,

2.войти в редактор VBA,

3.в окне проекта выбрать нужный проект, отобразить его контекстное меню и выбрать команду Properties (Свойства). Отобразится диалоговое окно VBAProject — Project properties (Свойства проекта),

4.на вкладке Protection (Защита) (рис. 10.9) следует ус-

тановить флажок Lock project for viewing,

5.в полях Password (Пароль) и Confirm password

(Подтвердить пароль), ввести и подтвердить пароль открытия проекта.

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

Программным способом задать пароль для блокировки проекта нельзя, но можно проверить, заблокирован он или нет. Для этого следует воспользоваться объектом VBProject

библиотеки Microsoft Visual Basic for Applications Extensibility 5.3, установив ссылку на нее в том проекте, из процедуры которого предполагается проверять блокировку другого про-

169

екта. Свойство VBProject документа приложения хранит ссылку на объект, представляющий проект VBA, содержащийся в документе. По значению его свойства protection можно определить, заблокирован или нет проект документа. Если это свойство равно True, то проект заблокирован, если равно False

— нет. Обычно в коде для этих целей используется константа vbext_pp_locked.

Рис. 10.9. Вкладка Protection диалогового окна

Project Properties

В приводимой ниже процедуре проверяется блокировка содержащегося в документе Word проекта.

Проверка блокировки проекта

Public Sub t()

Dim vbpProj As VBIDE.VBProject Dim docProj As Word.Document

'Открыть документ, проект которого проверяется

Set docProj = Documents.Open("С:\Temp\doc2.doc")

170

'Установить ссылку на проект VBA документа

Set vbpProj = docProj.VBProject

'Проверка свойства Protection проекта VBA If vbpProj.Protection = vbext_pp_locked Then MsgBox "Проект заблокирован"

Else

MsgBox "Проект не заблокирован"

End If End Sub

Нам не удалось придумать реального примера с использованием проверки блокировки проекта, поэтому вышеприведенная процедура является всего лишь демонстрационной. Работая над этой темой, мы думали использовать ее при вызове процедуры из заблокированного проекта в каком-либо нашем проекте. В соответствии с документацией в подобной ситуации должно отображаться диалоговое окно для ввода пароля, соответствующего паролю блокировки, иначе процедура не будет выполняться. В действительности все оказалось значительно проще — можно выполнять любую процедуру заблокированного проекта без знания пароля блокировки! После того как определена ссылка в проекте на заблокированный проект, содержащийся в каком-либо документе, то, если известны имена всех его процедур, можно смело их вызывать из процедур разрабатываемого проекта.

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

10.3. Защита документов от макровирусов

Программные вирусы внедряются в код программного обеспечения и начинают свою самостоятельную жизнь. Вирусы создаются программистами — и то, что вирус может и бу-

171

дет делать, зависит от характера и настроения программиста, когда он задумывал и реализовывал свою "затею".

Обычно вирусы пишутся на языках низкого уровня (Ассемблер, С), но в последнее время распространился новый

тип вируса, который, используя макроязыки приложений,

например VBA, внедряется в документ и ассоциируется с ним. Такие вирусы и называют макровирусами. Первым подобным вирусом был Word Concept — он всего лишь сохранял документ как шаблон, не причиняя никакого вреда информации, хранящейся в компьютере. Для своего размножения макровирусы используют общий шаблон Normal. DOT приложения Word или файл Personal.XLS приложения Excel, копируя себя в эти файлы или другие скрытые места. При открытии документа или рабочей книги они автоматически перекочевывают в них, и таким образом происходит их размножение. Вирусы могут просто шутить: изменять текст в заголовке окна приложения или отображать какие-то сообщения, но в принципе они могут делать все, что позволяет макроязык, например переименовывать и удалять файлы. Поэтому борьба с макровирусами так же важна, как и забота о защите кода VBA — ведь, в конечном счете, это все и составляет безопасность приложения.

Семейство приложений Office имеет следующие способа защиты:

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

поддержка антивирусных программ, разработанных другими фирмами;

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

Поддержка антивирусных программ предполагает установку соответствующего программного обеспечения, которое

172

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]