Рекомендации по обеспечению безопасности для решений Office
Средства безопасности, доступные в платформе Microsoft .NET Framework и системе Microsoft Office, могут обеспечить защиту от различных возможных угроз безопасности в решениях Office.Тема объясняет некоторые из этих угроз и обеспечивает рекомендации по тому, каким образом защититься от них.Она также включает информацию о том, как параметры безопасности системы Microsoft Office влияют на решения Office.
Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Office 2013 и Office 2010. См. раздел Доступность функций по типам приложений Office и проектов.
Надежный код перенаправляется в новый, потенциально вредоносный документ
Злоумышленник может занять доверенный код, значен для одной конкретной цели, например, загрузя персональные данные для приложения занятости и повторно использовать в другом документе, например лист.Код не знает, что оригинальный документ не запущен, и может открыть вверх по другим возникнуть угрозы, например, указывающий персональные данные или код выполняться с правами доступа, увеличенному раскрыванный другим пользователем.Также атакующий может просто изменить данные в листе так, что при отправке его потенциальной жертве он будет вести себя не так, как ожидается.Изменение значений, формул или характеристик презентации листа, ссылающегося на код, дает возможность злоумышленнику атаковать другого пользователя путем посылки тому измененного файла.Также пользователи могут получить доступ к информации, которую им не следует видеть, изменяя значения в листе.
Т.к. расположения сборки и документа должны иметь достаточные доказательства для того, чтобы быть выполненными, эту атаку нелегко подключить.Например, документы во вложениях электронной почты или на ненадежных серверах интрасети не имеют разрешений на выполнение.
Чтобы эта атака стала возможной, сам код должен быть написан таким образом, чтобы принимать решения, основанные на потенциально неблагонадежных данных.Пример создания листа, на котором содержится скрытая ячейка, содержащая имя сервера базы данных.Пользователь преобразует лист в ASPX-страницу, которая пытается соединиться с этим сервером, используя проверку подлинности SQL и жестко запрограммированный пароль системного администратора.Атакующий может заменить содержимое скрытой ячейки именем другого компьютера и получить пароль системного администратора.Чтобы избежать этой проблемы, никогда не используйте жестко закодированные пароли, и всегда проверяйте идентификаторы серверов по внутреннему списку надежных серверов перед доступом на сервер.
Рекомендации
Всегда проверяйте входные данные, и получена ли она от пользователя документа базы данных, веб-службы или любого другого источника.
Будьте осторожны при использовании функциональности отдельных типов, получающих привилегированные данные от имени пользователя и передающих их на незащищенные листы.
В зависимости от типа приложений может иметь смысл проверять, что оригинальный документ выполняется до выполнения какой-либо код.Например, убедитесь в том, что он запускается из документа, хранящегося на известном идентификаторе, безопасном месте.
Рекомендуется отображать предупреждения при открытии документа, если приложение выполняет какие-то привилегированные действия.Например, можно создать экран-заставку или диалоговое окно при старте, предупреждающее о том, что приложение будет иметь доступ к личной информации, чтобы пользователь мог выбрать, продолжать или отменить запуск этого приложения.Если конечный пользователь получает такое предупреждение из кажущегося внешне безвредным документа, он или она сможет выйти из приложения перед тем, как что-либо подвергнется угрозе.
Код блокируется системой безопасности объектной модели Outlook
Microsoft Office может запретить коду использовать определенные свойства, методы и объекты в объектной модели.Запрещая доступ к этим объектам, Outlook помогает предупредить использование червями и вирусами, пришедшими по электронной почте, объектной модели во вредоносных целях.Эта функция безопасности известна как система безопасности объектной модели Outlook.Если надстройка пытается использовать запрещенное свойство или метод при включенной системе безопасности объектной модели, Outlook показывает предупреждение, позволяющее пользователю остановить операцию или выдать доступ данному процессу к свойству или методу на ограниченный период времени.Если пользователь останавливает операцию, добавить- ins outlook, созданный с помощью решений office в Visual Studio создаст исключение COMException.
Система безопасности объектной модели может влиять на надстройки различными способами в зависимости от того, используется ли Outlook Microsoft Exchange Server:
Если Outlook не используется Exchange, администратор может разрешить или запретить использование системы безопасности объектной модели для всех надстроек на компьютере.
Если Outlook используется Exchange, администратор может разрешить или запретить использование системы безопасности объектной модели для всех надстроек на компьютере, или администратор может указать конкретные надстройки, которые могут запускаться без проверки системой безопасности объектной модели.Администратор может также изменять поведение системы безопасности объектной модели для определенных частей объектной модели.Например, администратор может разрешить надстройкам автоматически посылать электронную почту программно, даже если система безопасности объектной модели включена.
Запуск в outlook 2007 функциональности условия объектной модели была изменена, чтобы улучшить разработчик и взаимодействие с пользователем при помогающ содержать внешний вид безопасным.Дополнительные сведения см. в разделе Изменения безопасности кода в Outlook 2007.
Предупреждения минимизированной системы безопасности объектной модели
Во избежание получения предупреждений безопасности при использовании запрещенных свойств и методов, удостоверьтесь в том, что надстройки получают объекты Outlook из поля Application класса ThisAddIn в проекте.Дополнительные сведения об этом поле см. в разделе Программирование надстроек уровня приложения.
Только объекты Outlook, полученные из этого объекта, могут считаться надежными системой безопасности объектной модели.С другой стороны, объекты, полученные из нового объекта Microsoft.Office.Interop.Outlook.Application, не считаются надежными, и запрещенные свойства и методы будут вызывать предупреждения безопасности, если система безопасности объектной модели включена.
В следующем примере кода показаны предупреждения безопасности, если система безопасности объектной модели включена.Свойство To класса Microsoft.Office.Interop.Outlook.MailItem запрещено системой безопасности объектной модели.Объект Microsoft.Office.Interop.Outlook.MailItem не считается надежным, поскольку код получает его из Microsoft.Office.Interop.Outlook.Application, созданного при помощи оператора new, вместо того, чтобы получить его из поля Application.
Private Sub UntrustedCode()
Dim application As New Microsoft.Office.Interop.Outlook.Application
Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
TryCast(application.CreateItem( _
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem), _
Microsoft.Office.Interop.Outlook.MailItem)
mailItem1.To = "someone@example.com"
MessageBox.Show(mailItem1.To)
End Sub
private void UntrustedCode()
{
Microsoft.Office.Interop.Outlook.Application application =
new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
application.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
Microsoft.Office.Interop.Outlook.MailItem;
mailItem1.To = "someone@example.com";
MessageBox.Show(mailItem1.To);
}
В следующем примере кода показано использование запрещенного свойства To объекта Microsoft.Office.Interop.Outlook.MailItem, который считается надежным системой безопасности объектной модели.Код использует надежное поле Application для получения Microsoft.Office.Interop.Outlook.MailItem.
Private Sub TrustedCode()
Dim mailItem1 As Microsoft.Office.Interop.Outlook.MailItem = _
TryCast(Me.Application.CreateItem( _
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem), _
Microsoft.Office.Interop.Outlook.MailItem)
mailItem1.To = "someone@example.com"
MessageBox.Show(mailItem1.To)
End Sub
private void TrustedCode()
{
Microsoft.Office.Interop.Outlook.MailItem mailItem1 =
this.Application.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
Microsoft.Office.Interop.Outlook.MailItem;
mailItem1.To = "someone@example.com";
MessageBox.Show(mailItem1.To);
}
Примечание |
---|
Если Outlook используется вместе с Exchange, то получение всех объектов Outlook из ThisAddIn.Application не гарантирует, что надстройка будет способна получить доступ ко всей объектной модели Outlook.Например, если администратор Exchange установил в Outlook автоматический запрет на все попытки получить доступ к адресной информации при помощи объектной модели Outlook, то в предыдущем примере Outlook не разрешит доступ к свойству To, даже если пример кода использует надежное поле ThisAddIn.Application. |
Указание, какие надстройки являются надежными при использовании Exchange
При использовании Outlook совместно с Exchange администраторы могут указать, какие конкретно надстройки могут выполняться без прохождения системы безопасности объектной модели.Добавить- ins outlook, созданный с помощью решений office в Visual Studio нельзя доверять по отдельности; ним можно доверять только как группа.
Outlook считает надежными надстройки, основанные на хэш-коде точки входа DLL надстройки.Все надстройки Outlook, ориентированные на Visual Studio Tools for Office (cреда выполнения), используют одну и ту же библиотеку DLL точки входа (VSTOLoader.dll).Это означает, что если администратор доверяет какой-либо надстройке, ориентированной на Visual Studio Tools for Office (cреда выполнения), выполняться без проверки системой безопасности объектной модели, то все остальные надстройки, ориентированные на Visual Studio Tools for Office (cреда выполнения), также будут являться надежными.Дополнительную информацию об отдельных надежных надстройках, которые могут выполняться без проверки системой безопасности объектной модели, см. в разделе Выбор метода, используемого Outlook для управления функциями антивирусной защиты.
Изменение разрешений происходит не сразу
Если администратор настраивает разрешения для документа или сборки, то пользователи могут выйти и перезагрузить все приложения Office для применения данных изменений.
Другие приложения, размещающие приложения Microsoft Office, также могут предотвращать применение ограничений для новых разрешений.Пользователи должны завершить все приложения, размещенные или изолированные, которые используют Office, во время изменения политики безопасности.
Параметры центра управления безопасностью в системе Microsoft Office не влияют на надстройки или настройки уровня документа
Пользователи могут предотвратить загрузку надстроек путем установки параметров в Центре управления безопасностью.Однако добавить- ins уровня приложения и настройки уровня документа, созданных с помощью решений office в Visual Studio не затронутые этими параметрами доверия.
Если пользователь предотвращает загрузку надстроек путем установки параметров в Центре управления безопасностью, следующие типы надстроек не будут загружаться:
Управляемые и неуправляемые надстройки COM.
Управляемые и неуправляемые смарт-документы.
Управляемая и неуправляемая автоматизация надстроек.
Управляемые и неуправляемые в реальном времени компоненты данных.
Следующие процедуры описывают пользователи могут использовать центр управления безопасностью для ограничения загрузки добавить- ins в Microsoft Office 2013 и Microsoft Office 2010.Эти процедуры не влияют на добавить- ins или настройки, созданные с помощью средств разработки office в Visual Studio.
Отключение добавить- ins в приложениях Microsoft Office 2010 и Microsoft Office 2013
Выберите вкладку Файл.
Нажмите кнопку ApplicationName Параметры.
В области категорий выберите центр управления безопасностью.
В области сведений выберите параметры центра управления безопасностью.
В области категорий выберите Надстройки.
В области деталей выберите Требовать, чтобы надстройки приложений были помечены надежным издателем или Отключить все надстройки приложений.