Поделиться через


Безопасность и доверие

В платформе .NET Framework реализована система безопасности, по-разному обрабатывающая приложения в зависимости от их происхождения. Исполняемые файлы и сборки, которые находятся на компьютере пользователя, обычно выполняются с полным доверием; Одни и те же исполняемые файлы и сборки, выполняемые через Интернет, обычно выполняются с частичным доверием. Это необходимо, чтобы вредоносный код не считывал или изменял информацию, к которой у него нет доступа, например локальные файлы, элементы в буфере обмена и другие ресурсы. Если исполняемый файл вызывает сборку, которая, в свою очередь, вызывает другую сборку, требующую определенного уровня доверия, применяется самый низкий уровень доверия из всех компонентов в цепочке. Однако администратор на компьютере может задать определенные разрешения, которые переопределяют разрешения по умолчанию.

Общие сведения о модели безопасности приведены в разделе Безопасность, элементы управления Light-Weight Client-Side, а дополнительные сведения о модели безопасности см. в статье Безопасность доступа к коду на практике. Хороший обзор безопасности библиотек (что особенно важно для объектов UserControl на веб-странице) можно найти в разделе Использование библиотек из частично доверенного кода, а другие сведения о безопасности для управляемых элементов управления можно найти в статье Написание защищенных управляемых элементов управления.

Разрешения

Большинство управляемых объектов и членов в API технологий планшетного пк имеют два требования:

  • Выполнение всегда требуется.
  • Функция FullTrust требуется при выполнении действия безопасности InheritanceDemand . Это означает, что полное доверие требуется, когда производный класс наследует класс или переопределяет метод из пакета SDK для планшетного компьютера.

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

Класс или метод Разрешения
CanPaste UIPermissionClipboard.AllClipboard
Ink.ClipboardCopy UIPermissionClipboard.OwnClipboard
Ink.ClipboardPaste UIPermissionClipboard.AllClipboard
InkCollector UIPermissionWindow.SafeTopLevelWindows
InkCollector(IntPtr) UIPermissionWindow.SafeTopLevelWindows и SecurityPermissionFlag.UnmanagedCode
InkCollector.Handle UIPermissionWindow.AllWindows и SecurityPermissionFlag.UnmanagedCode (см. примечание ниже)
InkEdit UIPermissionWindow.SafeTopLevelWindows
InkOverlay UIPermissionWindow.SafeTopLevelWindows
InkOverlay(IntPtr) UIPermissionWindow.SafeTopLevelWindows и SecurityPermissionFlag.UnmanagedCode
InkOverlay.Handle UIPermissionWindow.AllWindows и SecurityPermissionFlag.UnmanagedCode (см. примечание ниже)
InkPicture UIPermissionWindow.SafeTopLevelWindows
PenInputPanel См. примечание ниже.
InkRenderer UIPermissionWindow.SafeTopLevelWindows
Рисование, рисование UIPermissionWindow.SafeTopLevelWindows и SecurityPermissionFlag.UnmanagedCode
Renderer.InkSpaceToPixel(IntPtr,Point), Renderer.InkSpaceToPixel(IntPtr,Point[]) UIPermissionWindow.SafeTopLevelWindows и SecurityPermissionFlag.UnmanagedCode
Renderer.PixelToInkSpace(IntPtr,Point), Renderer.PixelToInkSpace(IntPtr,Point[]) UIPermissionWindow.SafeTopLevelWindows и SecurityPermissionFlag.UnmanagedCode
DynamicRenderer UIPermissionWindow.SafeTopLevelWindows
DynamicRenderer(IntPtr) UIPermissionWindow.SafeTopLevelWindows и SecurityPermissionFlag.UnmanagedCode
RealTimeStylus UIPermissionWindow.SafeTopLevelWindows
RealTimeStylus(IntPtr), RealTimeStylus(IntPtr,Boolean), RealTimeStylus(IntPtr,Tablet) UIPermissionWindow.AllWindows и SecurityPermissionFlag.UnmanagedCode

 

Примечание

Как правило, для конструкторов предпочтительнее использовать элемент управления , а не дескриптор (IntPtr), так как элементам управления требуется меньше разрешений. Аналогичным образом предпочтительнее использовать объект Graphics, а не дескриптор для Renderer.Draw, Renderer.InkSpaceToPixel и Renderer.PixelToInkSpace.

 

Примечание

Свойства InkCollector.Handle и InkOverlay.Handle не требуют разрешения SecurityPermissionFlag.UnmanagedCode, если дескриптор предназначен для элемента управления Windows Forms, но для других окон.

 

Примечание

Для класса PenInputPanel требуются следующие методы и свойства SecurityPermissionFlag.AllFlags: PenInputPanel(IntPtr), AttachedEditWindow, Busy, CommitPendingInput, CurrentPanel, DefaultPanel, EnableTsf, Factoid, Height, HorizontalOffset, InputFailed, Left, MoveTo, PanelChanged, PanelMoving, Refresh , Top, VerticalOffset, Visible, VisibleChanged и Width.

 

Другие вопросы

Ниже приведены некоторые другие известные рекомендации по обеспечению безопасности.

  • Для правильной работы веб-элементов управления требуется Microsoft Internet Обозреватель 6 или более поздней версии. При использовании Internet Обозреватель 5.5 загружаются только начальные управляемые элементы управления. Дополнительные элементы управления нельзя загружать динамически во время выполнения.
  • Если вы используете Windows XP с пакетом обновления 2 (SP2) и CLR1.0, то наличие веб-элементов управления в Интернете Обозреватель потребует добавления сайта в качестве доверенного сайта, даже если они находятся в зоне интрасети. Однако при этом они больше не будут работать в зоне доверенного сайта, хотя и в зоне интрасети. Эта проблема устранена в СРЕДЕ CLR1.1.