Zugriffsschutz: protected und packages

Status
Nicht offen für weitere Antworten.

Leroy42

Top Contributor
Ich habe gerade in einem anderen Forum ein Post gesehen,
der bei mir Verständnisschwierigkeiten auslöst.
TK1985 hat gesagt.:
Ich hab mal ein paar Fragen zu den Zugriffsmodifier unter Java und ihrer Anwendung.
Wenn ich die Daten eines Objekts verändern will, dann mach ich das ja nicht durch direkten Zugriff auf die Atribute sondern über Methoden, die dann wiederum die Atribute des Objekts beeinflussen. Solche Atribute die ich gegen "unerlaubten" Zugriff schützen will definiere ich ja als private, oder!? Wenn ich jetzt aber eine Klasse vererben will dann kann ich in der Unterklasse nicht mehr auf die private-Elemente der Vaterklasse zugreifen, was ja aber oft sehr wünschenswert ist. Muss ich in dem Fall dann den den Modifier protected wählen? Ich hab jetzt gelesen, dass protected Atribute auch für andere Klassen im gleichen Packet sichtbar sind, was ja bedeuten würde das ich den Effekt des Zugriffschutzes nur außerhalb eines Packets erziele. Ist das ein wirkliches Problem oder ist es in der Praxis eh immer der Fall das sich fremde Klassen in einem anderen Packet befinden und ich so den Zugriffsschutz habe.
Ich hoffe mir kann da jemand weiterhelfen.

MfG
Thomas

Dazu jetzt meine Frage:

TK1985 hat gesagt.:
Ich hab jetzt gelesen, dass protected Atribute auch für andere Klassen im gleichen Packet sichtbar sind
:shock: Das wußte ich noch gar nicht :shock:
Ich hab's gleich ausprobiert und es stimmt tatsächlich.

TK1985 hat gesagt.:
Ist das ein wirkliches Problem oder ist es in der Praxis eh immer der Fall das sich fremde Klassen in einem anderen Packet befinden und ich so den Zugriffsschutz habe.
Gute Frage!
Ich würde sagen, daß dem Ersteller eines packages natürlich die
Erlaubnis gegeben werden kann, in seinem package auf protected
Elemente zuzugreifen.

Die Frage ist jetzt, ob ich mich in ein vorhandenes Fremd-Package einschleusen kann. In der Art:

Code:
// ganz.geheimes.package.Spion.java
package ganz.geheimes.package;

class Spion {
  public static IrgendeineClass1 getStaticMember1() {return PackageClass1.Geheim;}
  public static IrgendeineClass2 getStaticMember1() {return PackageClass2.Geheim;}
  }
}
Anders gefragt: Was macht der ClassLoader wenn er in mehreren Jar-Files ein
bestimmtes Package findet? Mischt er dann die Klassen der Packages?
 

Leroy42

Top Contributor
Ich habe die Ursprungsfrage ja gar nicht gestellt, weil ich bisher mit den
Feinheiten der Zugriffsrechte nichts zu tun hatte. Mir ist auch klar, wo ich
diese Information bekommen kann (Java Language Specification).

Was ich meine ist, ob ich z.B. ein package desselben Namens eines bereits
existierenden erstellen kann, dieses dann in ein Jar packe, das Jar in mein
classpath mit aufnehme und so von einer Klasses meines geklauten
Packages auf protected-Komponenten des eigentlichen Originalpackages
Zugriff erlangen kann, auch wenn diese in Klassen liegen die final sind; von
denen ich also nicht ableiten darf?

Das wäre dann doch eine Umgehung der Grundidee des Sicherheitskonzepts, oder?
 
B

Beni

Gast
Ich denke, wenn diese JARS über denselben ClassLoader geladen werden, dürfte der Angriff funktionieren. Das "final" schützt nur gegen Ableitung (allerdings 100%, da finale Klassen anders behandelt werden), nicht gegen Zugriff.

Dass man seine Packages nicht "java" oder "javax" nennen kann, wird ja wohl einen Grund haben :wink:
 

byte

Top Contributor
Wenns danach geht kannst Du das Jar doch einfach entpacken und Deine Klasse dem fremden Package hinzufügen. Ich sehe nur keinen Sinn darin. :roll:
 

Leroy42

Top Contributor
byto hat gesagt.:
Wenns danach geht kannst Du das Jar doch einfach entpacken und Deine Klasse dem fremden Package hinzufügen. Ich sehe nur keinen Sinn darin. :roll:
Ich kann es ja nur entpacken, wenn ich Zugriff auf den ausführenden Rechner habe.

Aber diese Aussage
Beni hat gesagt.:
Dass man seine Packages nicht "java" oder "javax" nennen kann, wird ja wohl einen Grund haben :wink:
zerstreut meine Bedenken :D

Daß ich ein Package nicht so nennen darf, wußte ich noch nicht. Aber dadurch wird zumindest
verhindert, daß ich mich in Systemklassen einschleusen kann. Damit ist meine
Frage dann beantwortet. :cool:

P.S. Bin ich jetzt blöd oder warum finde ich das Thema abgehakt-Häkchen nicht :shock:
Ich finde nur das Thema beobachten-Häkchen, was ja nicht funktionieren soll :(
 

bummerland

Top Contributor
Leroy42 hat gesagt.:
P.S. Bin ich jetzt blöd oder warum finde ich das Thema abgehakt-Häkchen nicht :shock:
Ich finde nur das Thema beobachten-Häkchen, was ja nicht funktionieren soll :(
es gibt gar kein Thema beobachten-Häkchen :autsch:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Public oder Private oder Protected Sinn Allgemeine Java-Themen 14
J Best Practice Testen von protected Methoden Allgemeine Java-Themen 7
badfish Inerhalb der [void main] auf ein Objekt der [protected void] zugreifen Allgemeine Java-Themen 13
T Protected Classes/Members Allgemeine Java-Themen 2
O Methoden in abstrakter Klasse: public oder protected? Allgemeine Java-Themen 16
E einfache Frage zu protected Allgemeine Java-Themen 10
J Einbinden einer protected-Methode aus anderem Package Allgemeine Java-Themen 2
T javax.script (JavaScript): Nicht-JRE-Packages importieren/nutzen Allgemeine Java-Themen 4
B Verwendung von Packages im Java Code Allgemeine Java-Themen 10
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
G Manifest mit Packages versehen Allgemeine Java-Themen 2
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
D Packages in ausführbaren Jars Allgemeine Java-Themen 4
Apo Zur Laufzeit Klassen mit Packages laden? Allgemeine Java-Themen 2
D Inhalt eines Packages im Code verarbeiten Allgemeine Java-Themen 18
@ Javadoc: Kurzbeschreibung Packages Allgemeine Java-Themen 10
F packages, public methods, assertions und argumentchecking. Allgemeine Java-Themen 3
L Fehlende Teile des javax Packages Allgemeine Java-Themen 3
J Packages in Java Allgemeine Java-Themen 2
M auf files des packages zugreifen Allgemeine Java-Themen 2
B Fremde Packages benutzen? Allgemeine Java-Themen 11
G Aufbau der Packages Allgemeine Java-Themen 3
B Installation neuer Packages Allgemeine Java-Themen 8
D defaultpackage-Klassen in anderen Packages aufrufen Allgemeine Java-Themen 2
M Classen eines Packages ermitteln Allgemeine Java-Themen 12
R Klassendesign in Packages Allgemeine Java-Themen 7
M problem mit packages - falsche einstellungen? Allgemeine Java-Themen 2
T Packages Allgemeine Java-Themen 9
S Problem bei Umstellung von (default package) auf Packages Allgemeine Java-Themen 10
J jar Datei mit Packages Allgemeine Java-Themen 30
A geladene Packages ermitteln Allgemeine Java-Themen 2
M Java2exe Externe Packages einbinden! .JAR und sowas Allgemeine Java-Themen 7
G Classpath, Packages und Import Allgemeine Java-Themen 3
I Liste aller bekannten Packages Allgemeine Java-Themen 6
H Problem mit Packages Allgemeine Java-Themen 11
Bionic Packages einbinden ?! Allgemeine Java-Themen 4
S outlook ähnliche leiste und sonstige packages Allgemeine Java-Themen 2
A Packages Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben