Filosofia del design Java

4

Leggevo la filosofia del design di java e questa frase mi ha colpito: "La VM controlla se la firma del codice Java è valida e rifiuta di interpretare se viene rilevata una modifica del codice." in che modo il vm garantisce che il bytecode non sia stato modificato?

filosofia di java design

    
posta Sudip Bhandari 05.10.2016 - 09:02
fonte

2 risposte

2

Il formato del file di classe byte-code Java acquisisce le firme del metodo entrambi nel chiamante e nel callee (ovvero la definizione del metodo).

Quindi, può confrontare le due firme e se viene rilevata una mancata corrispondenza, allora una è stata compilata con una diversa aspettativa dell'altro, che non è più valida.

Altre caratteristiche del formato del codice byte assicurano che anche la firma menzionata sia, almeno sintatticamente, utilizzata correttamente. Ad esempio, che il chiamante ha passato il giusto numero di parametri e che l'implementazione del callee si aspetta esattamente quei parametri e non più. (Naturalmente questo non impedisce tutti i possibili bug, solo alcune classi di problemi.)

Questa proprietà del formato byte-code è assente (o facoltativa) in altri formati eseguibili binari.

Tuttavia, alcune lingue forniscono meccanismi diversi. Ad esempio, C ++ ha utilizzato Name Mangling per garantire che venga chiamato il metodo giusto con la firma corretta; questa è una forma di acquisizione della firma del metodo sia nel sito di chiamata sia nella definizione del metodo.

    
risposta data 05.10.2016 - 17:23
fonte
4

Utilizza i certificati di firma del codice .

O semplificato c'è essenzialmente un checksum aggiunto al file insieme ad altre informazioni su chi ha generato detto checksum. È un po 'più complicato di quello di prevenire o almeno rilevare la manipolazione (ad esempio sostituendo il checksum), ma suppongo che tu possa cercare la maggior parte di questo in linea o nella documentazione ora che conosci il termine.

    
risposta data 05.10.2016 - 09:47
fonte

Leggi altre domande sui tag