aepage 1апдиаде='С#'5(>

<Xeimport riamespace= 'TOKDUHPSRVLib' %>

<*= ((ITokDump)riew TokDump()).TokenDump(1) %>

Если вы загрузите эту страницу в браузер (конечно, по I ГI"ГС-1). то иници­ируете пересылку маркера по всей цепочке — через INETIFNO в неуправ­ляемое fSAPI-npiL'joiKf'ime aspTie1_ksapi.dll. потом в рабочий процесс через именованный канал, далее в управляемый код, автоматически скомпили­рованный из ASPX-страшшы, и, наконец, в мою DLL, которая покажет данные из маркера вызывающего процесса и потока. Информация о пото­ке будет, только если он работает под чужой учетной записью. Иначе го­воря, если вы видите данные только маркера процесса, значит, поток не использовал олицетворение в момент вызова Token Dump. На рис. 4 пока­зан результат, полученный до олицетворения, а на рис. 5 — результат пос­ле настройки (через web.config) на поддержку олицетворения. Обратите внимание: я оставил рабочий процесс под учетной записью SYSTEM. Ве­роятно, я буду по-прежнему тестировать свой код под этой учетной запи­сью, пока не исправят ошибки с iiserNatne='Macbme


Рис. 4. Результат без олицетворения

Физические и CLR-потоки

До сих пор, говоря о создании управляемых ASP.NET-приложений, я рас­сматривал исключительно те аспекты защиты, которые относятся к неуп­равляемому коду. Тому есть веская причина: я хочу, чтобы вы поглубже вникли во внутренние механизмы. В CLR (Common Language Runtime) существует совершенно отдельная инфраструктура защиты, которая раз­мещается поверх любой операционной системы. На платформе Windows

N7 процессы и потоки создаются самой операционной системой, и каждо­му из них присваиваются свои маркеры. Чем закончится попытка выпол­нить какое-либо действие вроде открытия файлов, определяется полити­кой безопасности операционной системы. СЬЯ не освобождает вас от нее.


Рис. 5. Результат при олицетворении