Какова цель атрибута PermissionSet в примере класса MSDN FileSystemWatcher? - PullRequest
19 голосов
/ 26 мая 2010

На странице класса MSDN FileSystemWatcher он содержит пример со следующим атрибутом класса:

 [PermissionSet(SecurityAction.Demand, Name="FullTrust")]

Какова цель этого? Когда это должно быть включено или не включено?

Страница справки класса FileSystemWatcher находится здесь: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

1 Ответ

18 голосов
/ 26 мая 2010

Для класса FileSystemWatcher требуется ссылка на неограниченные разрешения CAS . Это означает, что он проверит, что у его прямого вызывающего абонента (т. Е. ваш код, если вы используете класс напрямую) есть неограниченные разрешения.

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

Один из способов предотвратить атаку такого рода - это применить собственную полную заявку на такое же разрешение к любому коду, который использует тип или элемент с требованием ссылки. Это будет гарантировать, что любые косвенные абоненты будут подвергаться такому же требованию разрешения, тем самым гарантируя, что они не смогут ничего сделать через ваш код, что они не смогли бы сделать самостоятельно. Пример кода MSDN для FileSystemWatcher демонстрирует применение этого вида полного запроса.

...