JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
coding<br />
Утилита ручной настройки прав доступа к коду<br />
5. В период выполнения Appl имеет необходимую подпись со строгим<br />
именем и может использовать MyClass.<br />
В этом примере для защиты API-элемента применяется атрибут<br />
LinkDemand.<br />
В примере, показанном ниже, частично доверенному коду запрещается<br />
обращаться к классам и методам (а также к свойствам и событиям).<br />
Когда такие объявления применяются к классу, защищаются<br />
все методы, свойства и события этого класса. Однако декларативная<br />
защита не влияет на доступ к полям. Кроме того, учти, что требования<br />
к связи (link demands) защищают только от непосредственно вызывающего<br />
кода — возможность атак с подменой сохраняется.<br />
[System.Security.Permissions.<br />
PermissionSetAttribute(System.Security.<br />
Permissions.SecurityAction.InheritanceDemand,<br />
Name="FullTrust")]<br />
[System.Security.Permissions.PermissionSetAttribute<br />
(System.Security.Permissions.SecurityAction.<br />
LinkDemand,<br />
Name="FullTrust")]<br />
public class YourClass{...}<br />
ÏÐÈÅÌÛ ÁÅÇÎÏÀÑÍÎÃÎ ÊÎÄÈÍÃÀ<br />
Запрос разрешений — отличный способ обеспечить поддержку защиты<br />
в разрабатываемом коде. Он позволяет запрашивать минимальные<br />
разрешения, необходимые для выполнения кода, и гарантировать, что<br />
код не получит разрешений больше, чем нужно. Например:<br />
[assemblyiFilelOPermissionAttribute<br />
(SecurityAction.RequestMinimum,<br />
XÀÊÅÐ 09 /140/ 10<br />
Wrlte="C:\\test.tmp")]<br />
[assembly:ÐårmissionSet<br />
(SecurityAction.RequestOptional. Unrestricted=false)]<br />
... SecurityAction.RequestRefused ...<br />
В этом примере системе сообщается, что код не должен запускаться,<br />
пока не получит разрешение на запись в C:\test.tmp. Если одна из<br />
политик безопасности не предоставляет такое разрешение, генерируется<br />
исключение PolicyException, и код не запускается. Ты должен<br />
убедиться в том, что коду выдается нужное разрешение, и тогда тебе<br />
не придется беспокоиться об ошибках из-за нехватки разрешений.<br />
Кроме того, здесь система уведомляется о том, что дополнительные<br />
разрешения нежелательны. Иначе код получит все разрешения,<br />
предусмотренные политикой безопасности. Лишние разрешения<br />
не принесут вреда, но, если в системе безопасности есть какая-то<br />
ошибка, уменьшение числа разрешений, выдаваемых коду, может<br />
прикрыть брешь в защите. Таким образом, если код обладает разрешениями,<br />
которые ему не нужны, возможны проблемы с безопасностью.<br />
Еще один способ ограничить количество привилегий, предоставляемых<br />
коду — явно перечислить разрешения, от которых следует<br />
отказаться. Отказ от разрешений осуществляется объявлением необязательности<br />
разрешений и исключением конкретных разрешений из<br />
запроса.<br />
ÇÀÊËÞ×ÅÍÈÅ<br />
Уфф! На тему обеспечения безопасности твоего кода можно говорить<br />
бесконечно. В рамках этой статьи я постарался упомянуть только<br />
самое важное и, на мой взгляд, интересное. Иными словами, то, что<br />
должно помочь тебе сделать свои приложения непробиваемыми. В<br />
общем, да пребудет с тобой Сила!z<br />
111