Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Pieczętowanie Archiwum Jar - Po co?

#1
Pieczętowanie Archiwum Jar - Po co?
Witam w jakim celu pieczętuje się archiwa JAR w JAVA ?

Na stronie Oracla w dziale Javy znalazłem info typu:"Package sealing is also important for security because it
restricts access to package-protected members to only those classes defined in the package that originated from
the same JAR file.".
O ile dobrze to rozumiem pieczętowanie stosuje się ze względów bezpieczeństwa ponieważ ogranicza to dostęp do klas
które są wewnątrz takiego zapieczętowanego pakietu.
W książce Java Podstawy znalazłem info :
"Pieczętowanie może być konieczne w przypadku używania klas, metod i pól o zasięgu pakietowym. Gdyby nie
pieczętowanie inne klasy mogły by być umieszczane w tym samym pakiecie i dzięki temu uzyskiwać dostęp do elementów pakietowych. "
Po koleji co zrobiłem:

1.Stworzyłem plik źródłowy z kodem plik1.java:
Kod:
public class plik1{
 public String name = "Jasio";
 public static void main(String[] args){
   System.out.println("Klasa zapieczętowana do której nie powinno być dostępu");
 }
 public String getImie(){
    return name;
 }
}
2.skompilowałem do postaci plik1.class

3.stworzyłem plik manifestu.mf:
Kod:
Main-Class: pakiet/plik1
//(pamiętałem o znaku nowej linie)
Name: pakiet/
sealed: true
//(pamiętałem o znaku nowej linie)
4.pliki umiesciłem w pakiecie(pakiet)

5.stworzyłem wykonywalne archiwum JAR : C:\java\jar cfvm Start.jar pakiet/manifest.mf pakiet/*.class
Wszystko działa owe archiwum można uruchomić z konsoli:java -jar Start.jar,
ALE do owego archiwum które zoastało zapieczętowane(I maiało być bezpieczne) mogę dodać poprzez update pliku JAR,
nową klasę która to klasa dostanie się do zmiennej name poprzez wywołanie metody getName():
6.nowaKlasa.java:


Kod:
public class nowaKlasa extends plik1{
 public nowaKlasa(){
   System.out.println("przechwytuje dane z zapieczętowanej klasy = "+this.getImie());
 }
 public static void main(String[] args){
   new nowaKlasa();
 }
}
7. C:\java\jar ufv Start.jar pakiet/nowaKlasa.class. (update zapieczętowanej paczki o nową klase)

Więc po co było owe pięczętowanie które miało zabezpieczyć zapięczętowane klasy przed dostępem do klas i ich
zmiennych. I że w ogóle na zapieczętowannej paczce(archiwum JAR) mogłem zrobić update.
Proszę o pomoc bo albo źle interpretuje owe pieczęntowanie pakietów albo źle wykonuje pieczętowanie, gdyż po
zapieczętowaniu pakietu mogę za pomocą innej klasy po wcześniejszym jej dodaniu dostać się do danych z klasy
plik1, a jeśli każdy może wykonać taki update archiwum (wstrzyknąć nieproszoną klasę) to może dostać się do
zawartości owego bezpiecznego(zapieczętowanego) pakietu.
Zagmatwałem ale mam nadzieje że ktoś zrozumie o co mi chodziOczko
 System operacyjny: windows_eight Przeglądarka: ie
#2
RE: Pieczętowanie Archiwum Jar - Po co?
1. Czy klasa plik1 jest w pakiecie pakiet? W kodzie nie widzę deklaracji pakietu.

2. Pieczętowanie ma zupełnie inne zadanie. Czytałeś https://docs.oracle.com/javase/tutorial/...alman.html ?

3. Ktoś tego używa?
 System operacyjny: linux_fedora Przeglądarka: firefox
#3
RE: Pieczętowanie Archiwum Jar - Po co?
Ad.1 Tak klasa plik1 znajduje się w pakiecie
Ad.2 Tak czytałem to oraz to:
https://books.google.pl/books?id=Igak-aU...mp;f=false
i to: https://books.google.pl/books?id=TnU_BAA...mp;f=false
i jeszcze kilka innych(nie wchodzę tu jeśli nie wyczerpie wszystkich możliwości i pomysłów, staram się dojść do czegoś sam żeby nie zawracać komuś głowy w ostateczności wchodzę tutaj).
Ad.3 Tak jak pisałem w moim poście sam nie wiem czy ktoś tego używa i dalej nie wiem co to pieczętowanie oznacza.
"Ps. Jak pisałem wcześniej czytałem w książce  "java podstawy / cay s. Horstmann i gary cornell", że
Pieczętowanie może być konieczne w przypadku używania klas, metod i pól o zasięgu pakietowym. Gdyby nie
pieczętowanie inne klasy mogły by być umieszczane w tym samym pakiecie i dzięki temu uzyskiwać dostęp do elementów pakietowych. ".A w linku który mi podesłałeś wygląda to trochę inaczej
1 Proszę o łopatoligiczne info do czego to służy ? Wesoły 
2. O jakiś przykład wykorzystania
3. Czy tego dziś się używa
Serdeczne dzięki
Pozdrawiam
 System operacyjny: windows_eight Przeglądarka: ie
#4
RE: Pieczętowanie Archiwum Jar - Po co?
Żeby tego użyć musisz mieć dwa jary. W jednym blokujesz, a w drugim nawet jak podasz taki sam pakiet, to nie podepniesz się pod parametry klasy, które mają poziom widoczności package. Nie przypominam sobie,  żebym przez kilkanaście lat pracy z java kiedykolwiek się z tym spotkał.
 System operacyjny: linux_fedora Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (Pieczętowanie Archiwum Jar - Po co?)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Winrar samorozpakowywujące się archiwum Vanil 0 2059 05.03.2013, 19:38
Ostatni post: Vanil
  Java plik *.jar jak uruchomić ? Missqu 2 73694 16.06.2011, 13:25
Ostatni post: Missqu
  Problem z odtworzeniem pliku .jar wizzi 3 7617 06.03.2011, 00:04
Ostatni post: koneton

Skocz do:


Wybrane wątki (Pieczętowanie Archiwum Jar - Po co?)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  SQL zapisanie w rekordzie nazwy zalogowanego użytkownika karlos1323 11 2487 30.12.2017 11:08
Ostatni post: koneton
  Mały algorytm bartek164 3 4044 25.12.2017 10:41
Ostatni post: Szachista
  Git - kompilacja pobranej apki ~Anonim 6 4062 23.12.2017 14:59
Ostatni post: ~Anonim
  wczytywanie zmiennej z innego pliku batch grymariusza 7 4403 18.12.2017 17:34
Ostatni post: broda99
  Jaki kod pod takie okno formularza w visualbasicu 2010? aktywny27 11 9175 26.11.2017 23:26
Ostatni post: Ajgor
  Jaki projekt na pythona bartek164 0 4108 25.11.2017 19:59
Ostatni post: bartek164
  [VB.NET] przenoszenie danych między formami Pioro 15 9883 19.11.2017 03:48
Ostatni post: broda99
  Java.android.Tworzenie akcji Blendow 0 4151 16.11.2017 23:38
Ostatni post: Blendow
  Proszę o pomoc, cmd! PanKasztan4 1 3847 16.11.2017 22:05
Ostatni post: broda99
  Jaki kod w visual basicu 2010 express? aktywny27 5 4758 07.11.2017 11:01
Ostatni post: Ajgor
  Sprawdzanie wygranej. PixelFullHD 1 4568 03.11.2017 18:38
Ostatni post: Ajgor
  Algorytm Genetyczny C pr1991 3 4898 26.10.2017 11:52
Ostatni post: Szachista
  Program C++ do pola i objętości mistrz18 2 4720 18.10.2017 23:10
Ostatni post: Ajgor
  [C]Część wspólna 2 przedziałów. polak3018 2 4679 13.10.2017 16:43
Ostatni post: ptrick
Question Wyznaczanie maksimum spośród 5 liczb - schemat blokowy mistrz18 5 5075 05.10.2017 19:49
Ostatni post: broda99