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 3158 05.03.2013, 19:38
Ostatni post: Vanil
  Java plik *.jar jak uruchomić ? Missqu 2 81922 16.06.2011, 13:25
Ostatni post: Missqu
  Problem z odtworzeniem pliku .jar wizzi 3 10456 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
  Silnik do gier ZigglerGames 1 7729 23.08.2018 09:03
Ostatni post: Szachista
  Chciałbym zrobić prosty plik exe z jedną funkcją densour 4 8444 09.08.2018 16:24
Ostatni post: Ajgor
  Który język wybrać do stworzenia aplikacji synchronizujące pliki z urządzeniem mobiln Elemental 2 2354 18.07.2018 12:05
Ostatni post: Ajgor
  Pomysł napisania programu ROM FireBytes 3 9100 28.06.2018 16:56
Ostatni post: FireBytes
  [VBA] Tworzenie nowego arkusza z danymi z TextBox'a Pioro 4 9381 19.06.2018 23:24
Ostatni post: broda99
  Potwierdzenie na maila po wysłaniu pliku coci 0 8563 13.06.2018 20:37
Ostatni post: coci
  Wyszukiwarka w spawnerze nie reaguje na polskie znaki kazik666 0 8952 16.05.2018 12:04
Ostatni post: kazik666
  BASH symulator silnika dawswi1 3 9444 13.05.2018 10:43
Ostatni post: Szachista
  Autohotkey automatyczny zapis TheProgson 0 9052 07.05.2018 21:27
Ostatni post: TheProgson
  VBA Pobieranie wybranych plików z danymi julietta03 1 9294 04.05.2018 08:25
Ostatni post: broda99
  [VBA] Przenoszenie danych między formularzami Pioro 4 9726 23.04.2018 11:48
Ostatni post: broda99
  Skrypt, który szuka i zamienia armen10 2 9482 23.04.2018 10:04
Ostatni post: armen10
  Liniowa regresja w Pythonie a budowanie modelu Trojan3000 2 9680 16.04.2018 13:26
Ostatni post: Trojan3000
  Początki z bashem - jak napisać skrypty: wysłanie maila i kalkulator? Kristov81 4 13526 21.03.2018 18:32
Ostatni post: Szachista
Ściana Zadanie cmd.... Yanke$ 2 10663 16.03.2018 17:20
Ostatni post: FireBytes