2. Sicurezza
Le Applet sono codice sconosciuto che la nostra macchia esegue, quindi
potenzialmente si tratta di qualcosa di molto pericoloso.
Per questo è stato fatto molto per garantirne la sicurezza.
Il modello di sicurezza è detto sand box: un contenitore da cui le applet
non possono evadere. Il controllo delle operazioni viene effettuato dal
Security Manager. Il S.M. lancia l’eccezione SecurityException quando si
ha un tentativo di operazione vietata.
L’applet non può (oltre alla limitazioni intrinseche di java):
accedere al file system locale
usare procedure native o comandi di sistema
definire proprietà di sistema e leggerne alcune
crea o interagire con thread che non appartengono all’applet
definire nuove istanze di alcune classi come il SecurityManager
accettare connessioni da un client
prelevare file che non provengono dall’host di provenienza.
3. Uso di file sull’Host
Sono particolarmente utili i metodi
getDocumentBase(); //url della pagina che contiene l’Applet
getCodeBase(); //url della directory che contiene l’Applet
Ad esempio sarà possibile caricare un immagine con:
Image img=getImage(getCodebase(),”images/figura.jpg”);
O un audioclip con:
AudioClip ac=getAudioClip(getCodebase(),”audio.mid”);
Connettersi a un host:
Socket s=new Socket(getCodebase().getHost(),1666);
O recuperare un oggetto remoto:
MyObj mo=(MyObj)Naming.lookup(“//”+getCodebase().getHost()+
“/MioServizio”);
4. Applet Firmate
Dalla versione 1.1 del JDK è possibile superare la limitazione della sandbox. Le
applet firmate possono avere permessi maggiori.
compilare il file java e creare un archivio jar
generare le chiavi pubblica e privata
keytool –genkey –alias Me –keystore MyStore
Tale comando richiede l’inserimento di informazioni aggiuntive
Tra cui due password una principale(storepass) e una per l’alias(keypass)
firmare l’archivio:
jarsigner –keystore MyStore –storepass MyPassword –keypass MyKeypass
archivio.jar Me
verificare l’archivio: jarsigner –verify archivio.jar
esportare il certificato per chi lo dovrà usare:
keytool -export –alias Me –keystore MyStore –file MyCert.cer
Il client dovrà installare il certificato:
keytool –import –alias You –keystore YourStore –file MyCert.cer
5. File di Policy
Installato il certificato è possibile assegnare un file di policy solo alle
applet firmate da “You”:
keystore “YourStore”
grant SignedBy “You” {
permission java.io.FilePermission “C:AUTOXEC.BAT”, “read”;
permission java.util.PropertyPermission “user.name”, “read”;
}
Esecuzione con appletviewer
appletviewer –J-Djava.security.policy=mia.policy pagina.html
Usando un browser si hanno a disposizione strumenti specifici per
installare i certificati.
6. AppletContext
E’ possibile far dialogare le applet che appartengono alla stessa pagina
grazie al ‘contesto’ delle applet.
AppletContext ac=getAppletContext();
L’AppletContext dispone di metodi molto utili:
Enumeration e=ac.getApplets(); //tutte le applet della pagina
MyApplet ma=(MyApplet)ac.getApplet(“nome”); //un’applet specifica
ma.calcola(5); //esecuzione di un metodo di un’altra applet
(NOTA il nome dell’applet viene fissato nell’HTML come attributo del tag
APPLET>)
Inoltre AppletContext permette di caricare un URL differente, di realizzare
un link ipertestuale.
URL url=new URL(“http://www.sun.com”);
cc.showDocument(url);
7. AppletContext
E’ possibile far dialogare le applet che appartengono alla stessa pagina
grazie al ‘contesto’ delle applet.
AppletContext ac=getAppletContext();
L’AppletContext dispone di metodi molto utili:
Enumeration e=ac.getApplets(); //tutte le applet della pagina
MyApplet ma=(MyApplet)ac.getApplet(“nome”); //un’applet specifica
ma.calcola(5); //esecuzione di un metodo di un’altra applet
(NOTA il nome dell’applet viene fissato nell’HTML come attributo del tag
APPLET>)
Inoltre AppletContext permette di caricare un URL differente, di realizzare
un link ipertestuale.
URL url=new URL(“http://www.sun.com”);
cc.showDocument(url);