Reflexionssicherheit

8

Wie erzwinge ich die Reflexionssicherheit, indem ich nicht erlaube, dass das Objekt Method , Field , Constructor setAccessible(true) aufruft? SecurityPolicy-Datei oder etwas anderes?

Normalerweise ist für eigenständige Java-Anwendungen kein SecurityManager registriert.

Ich benutze dieses System.setSecurityManager(new SecurityManager());

Dieser Ansatz funktioniert für Aufrufmethoden.

Ich möchte den gesamten jar oder Client-Code erzwingen, der den jar nicht erlaubt, setAccessible(true);

aufzurufen

Jeder bessere Ansatz?

Danke.

    
peterwkc 01.02.2013, 04:29
quelle

1 Antwort

3

Äh, es funktioniert für setAccessible. Siehe:

%Vor%

und

%Vor%

Ergebnisse in

%Vor%

Ein Grund, warum es für Sie vielleicht nicht funktioniert hat, ist der Kommentar in diesem Beitrag Es hat nicht in Java 1.5 funktioniert, funktioniert aber in 6 und danach.

Bearbeiten: Um es für bestimmte jars zu verweigern, müssen Sie entweder eine Richtliniendatei verwenden, zum Beispiel:

%Vor%

Es gibt zwei Möglichkeiten, die Richtliniendatei anzugeben. Geben Sie sie entweder als Ergänzung zum Standard ein oder geben Sie nur die angegebenen an (Quelle ):

  

Wenn Sie

verwenden %Vor%      

(beachte das Double equals) dann wird nur die angegebene Richtliniendatei sein   benutzt; alle die in der Datei mit den Sicherheitseigenschaften angegeben sind   ignoriert.

... oder implementieren Sie einen benutzerdefinierten Sicherheitsmanager, der nicht so schwer aussieht . Hab das aber selbst nicht gemacht.

    
eis 01.02.2013, 10:53
quelle