Видеть
Из бумаги:
... Алгоритм проверки стека, используемый в современных системах Java, можно рассматривать как обобщение следующей простой модели проверки стека :
В этой модели единственными принципами являются «системный» и «ненадежный». Аналогично, единственная доступная привилегия - «полная». Эта модель напоминает систему проверки стека, используемую внутри Netscape Navigator 3.0.
В этой модели каждый кадр стека помечается принципалом («система», если кадр выполняет код, являющийся частью виртуальной машины или ее встроенных библиотек, и «ненадежным» в противном случае) и содержит флаг привилегии, который может быть установленным системным классом, который выбирает «включить свои привилегии», явно заявляя, что он хочет сделать что-то опасное. Ненадежный класс не может установить свой флаг привилегии. Когда стек выходит из кадра, его привилегия флаг (если таковой имеется) автоматически исчезает.
Все процедуры, выполняющие опасную операцию, такую как доступ к файловой системе или сети, сначала применяют алгоритм проверки стека, чтобы определить, разрешен ли доступ. Алгоритм проверки стека просматривает кадры в стеке вызывающего последовательно, от самого нового до самого старого. Поиск завершается, предоставляя доступ, после нахождения стекового фрейма с флагом привилегий. Поиск также завершается, запрещая доступ и выбрасывая исключение, при обнаружении ненадежного фрейма стека (который никогда не мог получить флаг привилегии). ...