18.11.2014 Views

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!