Как работает Stack Inspection?

11

Это предшественник моего другого, более продвинутого вопроса об инспекции стека.

Проверка стека - это механизм безопасности, введенный в JVM для работы с кодом, исходящим из местоположений, имеющих разные уровни доверия. Этот вопрос направлен на поиск простого описания его функциональности. Так:

Как работает проверка стека?

Дэйв Кларк
источник

Ответы:

7

Видеть

Из бумаги:

... Алгоритм проверки стека, используемый в современных системах Java, можно рассматривать как обобщение следующей простой модели проверки стека :

В этой модели единственными принципами являются «системный» и «ненадежный». Аналогично, единственная доступная привилегия - «полная». Эта модель напоминает систему проверки стека, используемую внутри Netscape Navigator 3.0.

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

Все процедуры, выполняющие опасную операцию, такую ​​как доступ к файловой системе или сети, сначала применяют алгоритм проверки стека, чтобы определить, разрешен ли доступ. Алгоритм проверки стека просматривает кадры в стеке вызывающего последовательно, от самого нового до самого старого. Поиск завершается, предоставляя доступ, после нахождения стекового фрейма с флагом привилегий. Поиск также завершается, запрещая доступ и выбрасывая исключение, при обнаружении ненадежного фрейма стека (который никогда не мог получить флаг привилегии). ...

Вор
источник