Come funziona Stack Inspection?


11

Questo è il precursore della mia altra domanda più avanzata su Stack Inspection.

Stack Inspection è un meccanismo di sicurezza introdotto nella JVM per gestire il codice in esecuzione proveniente da posizioni con diversi livelli di affidabilità. Questa domanda mira a trovare una semplice descrizione della sua funzionalità. Così:

Come funziona l'ispezione dello stack?

Risposte:


7

Vedere

Dal documento:

... L'algoritmo di controllo dello stack utilizzato negli attuali sistemi Java può essere considerato una generalizzazione del seguente modello di controllo dello stack :

In questo modello, gli unici principi sono "sistema" e "non attendibile". Allo stesso modo, l'unico privilegio disponibile è "pieno". Questo modello è simile al sistema di controllo dello stack utilizzato internamente in Netscape Navigator 3.0.

In questo modello, ogni frame dello stack è etichettato con un'entità ("sistema" se il frame esegue codice che fa parte della macchina virtuale o delle sue librerie incorporate e "non attendibile" altrimenti) e contiene un flag di privilegio che può essere impostato da una classe di sistema che sceglie di "abilitare i suoi privilegi", dichiarando esplicitamente che vuole fare qualcosa di pericoloso. Una classe non attendibile non può impostare il proprio flag di privilegio. Quando esce uno stack frame, il suo flag di privilegio (se presente) scompare automaticamente.

Tutte le procedure per eseguire un'operazione pericolosa come l'accesso al file system o alla rete applicano prima un algoritmo di ispezione dello stack per decidere se l'accesso è consentito. L'algoritmo di controllo dello stack ricerca i frame nello stack del chiamante in sequenza, dal più recente al meno recente. La ricerca termina, consentendo l'accesso, alla ricerca di uno stack frame con un flag di privilegio. La ricerca termina anche, vietando l'accesso e generando un'eccezione, alla ricerca di un frame stack non attendibile (che non avrebbe mai potuto ottenere un flag di privilegio). ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.