Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz
Dwa sposoby tworzenia apletów Dwa sposoby tworzenia apletu: 1. W ramach projetu typu Java Application o charakterze Java WebStart i deskryptora apletu (applet descriptor) wyspecyfikowanego w pliku JNLP. 2. W ramach typu projektu Java Class Library, który jest biblioteką projektu typu Web Application. 2
Pierwszy sposób tworzenia apletów 1. Wybierz File > New Project. Z okienka Categories wybierz Java. Z okienka Projects, wybierz Java Application. Dokończ projekt (podaj nazwę projektu np..apletpliki1 i katalog). 2. W oknie Projects kliknij prawym klawiszem na nazwę projektu i wybierz New > Other. Z okienka Categories, wybierz Swing GUI Forms. Z okienka File Types, wybierz JApplet Form. Kliknij na Next. 3. W polu Class Name należy podać nazwę apletu (np. ApletPliki1 ). W polu Package należy wybrać pakiet, do którego należy aplet, lub zdefiniować nazwę nowego pakietu (np. apletpliki1). 4. Naciśnij przycisk Finish. Projekt zawiera aplet w podanym pakiecie. Plik apletu staruje w oknie edytora. 5. Zaprojektuj aplet za pomocą GUI Builder w trybie Design i kod w trybie Source. 6. Dodaj podobnie plik typu Java Class (np. Testpliki.java) i napisz kod źródłowy programu. 7. Kliknij prawym klawiszem na nazwę pliku w widoku Projects i wybierz pozycje Properties, a następnie wybierz panel Web Start. 8. Zaznacz przycisk Enable Web typu checkbox. 9. Wybierz przycisk Applet Descriptor typu radio i upewnij się, czy tworzony aplet jest wybrany w liście Applet Class typu combo box. 10. Zamknij formularz Properties projektu. 11. Kliknij prawym klawiszem i wybierz pozycję Build z wyskakującego menu. 12. Kliknij prawym klawiszem na plik typu applet (tutaj ApletPliki1) i wybierz pozycję Run File z wyskakującego menu. 3
4
5
6
7
8
9
10
11
Plik do dostarczania danych do apletu przez znacznik param dokonano również zmiany nazwy projektu na ApletPliki1 12
Plik html, wygenerowany automatycznie, do uruchamiania apletu 13
Okno Properties projektu z wybraną opcją Web Start 14
VM Option argumenty linii polecenia dla appletviewer 15
16
Projekt apletu za pomocą GUI BUILDER 17
Wygenerowany kod za pomocą Gui Builder 18
Obsługa zdarzeń typu Action (np. po wybraniu przycisku typu Button w trybie Design lewym klawiszem myszy należy kliknąć prawym klawiszem i z wyskakującego menu wybrać kolejno Event/Action/ actionperformed[jbutton1actionperformed]) i napisać stosowny kod 19
Edycja kodu pliku typu Java Class wstawionego do projektu (1) 20
Kod źródłowy klasy uniwersalnej do zapisu pliku (2) import java.io.*; public class Testpliki { public void Zapiszplik2(String dane1) { String dane[] = dane1.split(" "); try { FileOutputStream plik = new FileOutputStream("c:\\Testplik.dat"); BufferedOutputStream bufor = new BufferedOutputStream(plik); int size = dane.length; for (int i = 0; i < size; i++) { int dane2 = Byte.parseByte(dane[i]); if (dane2!= -1) { bufor.write(dane2); } } bufor.close(); } catch (Exception e) { System.out.println("Blad zapisu pliku bajtowego" + e); } } 21
Edycja kodu pliku typu Java Class wstawionego do projektu (3) 22
} Kod źródłowy klasy uniwersalnej do zapisu pliku (4) public String Odczytajplik2() { int dane = 0; String pom = ""; try { FileInputStream plik = new FileInputStream("c:\\Testplik.dat"); BufferedInputStream bufor = new BufferedInputStream(plik); dane = plik.read(); while (dane!= -1) { pom += " " + dane; dane = bufor.read(); } bufor.close(); } catch (Exception e) { System.out.println("Blad odczytu pliku bajtowego" + e); } return pom; } 23
Uruchomienie apletu (Run File) za pomocą programu AppletViewer 24
Drugi sposób tworzenia apletu 1. Wybierz z menu File\ New Project. Na formularzu New Project wybierz w oknie Categories kategorię projektu Java. W oknie Projects, wybierz typ projektu Java Class Library. Po naciśnięciu klawisza Next dokończ tworzenie pliku na kolejnym formularzu podaj nazwę (np. ApletPliki2) i położenie projektu. 2. Kliknij prawym klawiszem na nazwę projektu w oknie Projects. Z wyskakującego menu wybierz New\Other. Na ukazanym formularzu w oknie Categories, wybierz kategorię pliku Swing GUI Forms. W oknie Files Types wybierz JApplet Form. Naciśnij klawisz Next. 3. Podaj nazwę apletu w polu Class Name (np. apletpliki2). W polu Package podaj nazwę nowego pakietu, do którego będzie należał aplet (np. apletpliki2). 4. Naciśnij przycisk Finish. Projekt zawiera aplet w podanym pakiecie. Plik apletu staruje w oknie edytora. 5. Zaprojektuj aplet za pomocą GUI Builder w trybie Design i kod w trybie Source. 6. Dodaj podobnie plik typu Java Class (np. Testpliki.java) i napisz kod źródłowy programu. 7. Kliknij prawym klawiszem i wybierz pozycję Build z wyskakującego menu. 8. Kliknij prawym klawiszem na plik typu applet (tutaj ApletPliki2) i wybierz pozycję Run File z wyskakującego menu. 25
26
27
28
29
VM Option argumenty linii polecenia dla appletviewer 30
Uruchomienie apletu (Run File) za pomocą programu AppletViewer 31
Zabezpieczenia przed działaniem apletu Sposób 1 Zabezpieczenie przed działaniem apletu za pomocą pliku typu policy (przez wskazanie adresu url apletu za pomocą atrybutu CodeBase oraz zdefiniowanie ograniczeń dla działań apletu na komputerze użytkownika za pomocą atrybutu permission) Wykład: Bezpieczeństwo_apletów1
Sposoby uruchamiania apletów 1) przy wykorzystaniu appletviewer w środowisku NetBeans - domyślnie aplet posiada pełne prawa wykonania wszystkich operacji 2) przy wykorzystaniu przeglądarki niezaleznie od środowiska NetBeansdomyślnie aplet posiada minimalne uprawnienia do wykonania operacji np. plikowych 33
Ad1. Appletviewer (maksymalne uprawnienia) Plik applet.policy w katalogu głównym projektu jego domyślna zawartość 34
Edycja pliku applet.policy za pomocą narzędzia PolicyTool 35
Tworzenie lub edycja pliku zawierającego ograniczenia dla uruchamianego apletu w CodeBase ustawiono protokół typu file dla apletu uruchamianego bez pośrednictwa serwera www. Dla protokołu http używanego do pobrania apletu za pośrednictwem serwera www przykładowy CodeBase: http://sprocket.ict.pwr.wroc.pl/~zkruczkiewicz/wyklady/java 36
37
38
a) Plik applet.policy w katalogu głównym projektu jego domyślna zawartość 39
Plik applet.policy w katalogu głównym projektu używany przez appletviewer 40
Uruchomienie apletu (Run File) za pomocą programu Applet Viewer 41
b) Brak dostępu do operacji plikowych aplet zapisuje plik c:\testplik.dat, natomiast plik java.policy zezwala na zapis c:\testplik 42
Ad. 2. Przeglądarka Internet Explorer (minimalne uprawnienia) Zawartość katalogu jre1.6.0_05\lib\security oprogramowania Javy używanego przez przeglądarkę do uruchamiania apletów. Domyślnie aplet nie może zapisywać ani odczytywać plików - na podstawie plików definiujących zabezpieczenia programów Javy działających w sieci 43
a) Uruchomienie apletu dla domyślnych zabezpieczeń przewidzianych dla apletów nie można wywołać operacji plikowych 44
Zmiany w plikach katalogu jre1.6.0_05\lib\security oprogramowania używanego przez przeglądarkę do uruchamiania apletów dodanie pliku mojapolisa (odpowiednik pliku applet.policy) z definicją zabezpieczeń dla wybranych apletów, których położenie i rodzaj protokołu określono za pomocą CodeBase 45
Wpisanie do pliku java.security z definicją zabezpieczeń dla programów Javy informacji o pliku mojapolisa z definicją zabezpieczeń dla wybranej grupy apletów 46
b) Poprawne wywołanie operacji plikowych dla wybranych apletów 47
c) Po wprowadzeniu do polisy mojapolisa błędu w nazwie tworzonych plików operacje plikowe zostały zablokowane 48
Zabezpieczenia przed działaniem apletu Sposób 2 Zabezpieczenie przed działaniem apletu za pomocą podpisu cyfrowego (za pomocą parametru keystore w pliku typu polisa ) Wykład: Bezpieczeństwo_apletów2
Podpisywanie kodu aplikacji przez programistę, uruchamianej przez program java 50
Uwierzytelnianie kodu aplikacji przez użytkownika, uruchamianej przez program java 51
a) Utworzony certyfikat kluczfirma jest już przeterminowany b) Tworzenie nowego certyfikatu kluczfirma i pary kluczy: prywatnego i publicznego c) Podpisanie apletu ApletPliki2 jako pcapletpliki2 52
53
d) Export certyfikatu przez programistę oraz jego import przez użytkownika 54
Sposoby uruchamiania apletów 1) przy wykorzystaniu appletviewer w środowisku NetBeans - domyślnie aplet posiada pełne prawa wykonania wszystkich operacji 2) przy wykorzystaniu przeglądarki niezaleznie od środowiska NetBeansdomyślnie aplet posiada minimalne uprawnienia do wykonania operacji np. plikowych 55
Ad1. Appletviewer Plik applet.policy w katalogu głównym projektu jego zawartość po pierwszym kroku zabezpieczania 56
Uzupełnienie pliku applet.policy o informacje związane z podpisem cyfrowym za pomocą narzędzia PolicyTool 57
58
a) Rozpoznanie podpisanego apletu spakowanego w pliku pcapletpliki2.jar - można wykonywać operacje plikowe 59
b) Nie można rozpoznać podpisanego apletu (pomyłka w wartości atrybutu archive=apletpliki2.jar) - nie można wykonywać operacji plikowych 60
Ad. 2. Przeglądarka Internet Explorer Modyfikacja systemowego pliku typu java.security Uzupełnienie pliku mojapolisa (odpowiednik pliku applet.policy) 61
a) Nie można rozpoznać podpisanego apletu (pomyłka w wartości atrybutu archive=apletpliki2.jar) - nie można wykonywać operacji plikowych 62
Z powodu błędu w nazwie pliku typu jar w pliku typu html nie można wykonać operacji plikowych, ponieważ wskazany plik nie jest podpisany teraz można wykonać tylko aplet podpisany w podanej lokalizacji 63
b) Można rozpoznać podpisany aplet (poprawna wartości atrybutu archive=pcapletpliki2.jar) - można wykonywać operacje plikowe 64
65