SlideShare a Scribd company logo
1 of 7
Le Applet
Package java.applet
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.
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”);
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
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.
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);
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);

More Related Content

Similar to Java lezione 13

Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3Mauro Lorenzutti
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Mauro Lorenzutti
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloudGabriele Baldoni
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the cloudsDavide Cerbo
 
Android (Un)Security Guidelines - VoidSec
Android (Un)Security Guidelines - VoidSecAndroid (Un)Security Guidelines - VoidSec
Android (Un)Security Guidelines - VoidSecPaolo Stagno
 
Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Claudio Criscione
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Stefano Bianchini
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicinodavide ficano
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFAndrea Draghetti
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzionegiacomos
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiPaolo Sereno
 
Creazione di una REST API in Liferay
Creazione di una REST API in LiferayCreazione di una REST API in Liferay
Creazione di una REST API in LiferayNunzio Mastrapasqua
 

Similar to Java lezione 13 (20)

Idp, passo dopo passo!
Idp, passo dopo passo!Idp, passo dopo passo!
Idp, passo dopo passo!
 
Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automation
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 
Linux Day2005
Linux Day2005Linux Day2005
Linux Day2005
 
Android (Un)Security Guidelines - VoidSec
Android (Un)Security Guidelines - VoidSecAndroid (Un)Security Guidelines - VoidSec
Android (Un)Security Guidelines - VoidSec
 
Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]
 
Programming iOS lezione 4
Programming iOS lezione 4Programming iOS lezione 4
Programming iOS lezione 4
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
 
Java Advanced
Java AdvancedJava Advanced
Java Advanced
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTF
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Qt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immaginiQt Lezione3: un visualizzatore di immagini
Qt Lezione3: un visualizzatore di immagini
 
Creazione di una REST API in Liferay
Creazione di una REST API in LiferayCreazione di una REST API in Liferay
Creazione di una REST API in Liferay
 

More from Sergio Ronchi (20)

Java lezione 19
Java lezione 19Java lezione 19
Java lezione 19
 
Java lezione 18
Java lezione 18Java lezione 18
Java lezione 18
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Java lezione 16
Java lezione 16Java lezione 16
Java lezione 16
 
Java lezione 15
Java lezione 15Java lezione 15
Java lezione 15
 
Java lezione 12
Java lezione 12Java lezione 12
Java lezione 12
 
Java lezione 11
Java lezione 11Java lezione 11
Java lezione 11
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
 
Java lezione 9
Java lezione 9Java lezione 9
Java lezione 9
 
Java lezione 8
Java lezione 8Java lezione 8
Java lezione 8
 
Java lezione 7
Java lezione 7Java lezione 7
Java lezione 7
 
Java lezione 6
Java lezione 6Java lezione 6
Java lezione 6
 
Java lezione 5
Java lezione 5Java lezione 5
Java lezione 5
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
 
Java lezione 3
Java lezione 3Java lezione 3
Java lezione 3
 
Java lezione 2
Java lezione 2Java lezione 2
Java lezione 2
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Oracle PLSql 4
Oracle PLSql 4Oracle PLSql 4
Oracle PLSql 4
 

Java lezione 13

  • 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);