Como o Stack Inspection funciona?

11

Isso é precursor da minha outra pergunta mais avançada sobre inspeção de pilha.

O Stack Inspection é um mecanismo de segurança introduzido na JVM para lidar com o código em execução originário de locais com diferentes níveis de confiança. Esta questão visa encontrar uma descrição simples de sua funcionalidade. Assim:

Como a inspeção de pilha funciona?

Dave Clarke
fonte

Respostas:

7

Vejo

Do artigo:

... O algoritmo de inspeção de pilha usado nos sistemas Java atuais pode ser considerado uma generalização do seguinte modelo simples de inspeção de pilha :

Nesse modelo, os únicos principais são "sistema" e "não confiáveis". Da mesma forma, o único privilégio disponível é "cheio". Esse modelo é semelhante ao sistema de inspeção de pilha usado internamente no Netscape Navigator 3.0.

Nesse modelo, cada quadro de pilha é rotulado com um principal ("sistema" se o quadro estiver executando o código que faz parte da máquina virtual ou de suas bibliotecas internas e "não confiável", caso contrário) e contém um sinalizador de privilégio que pode ser definido por uma classe de sistema que opte por "habilitar seus privilégios", declarando explicitamente que deseja fazer algo perigoso. Uma classe não confiável não pode definir seu sinalizador de privilégio. Quando um quadro de pilha sai, seu sinalizador de privilégio (se houver) desaparece automaticamente.

Todos os procedimentos prestes a executar uma operação perigosa, como acessar o sistema de arquivos ou a rede, primeiro aplicam um algoritmo de inspeção de pilha para decidir se o acesso é permitido. O algoritmo de inspeção de pilha pesquisa os quadros na pilha do chamador em sequência, do mais recente para o mais antigo. A pesquisa termina, permitindo acesso, ao encontrar um quadro de pilha com um sinalizador de privilégio. A pesquisa também termina, proibindo o acesso e lançando uma exceção, ao encontrar um quadro de pilha não confiável (que nunca poderia ter recebido um sinalizador de privilégio). ...

Vor
fonte