Frage

Ich arbeite an einem künstlichen Intelligenz Projekt, das ein Logik-Spiel ist und die Ziele zwei Benutzer an den Server auf dem Netzwerk verbinden, die als Administrator fungiert und dann eins nach dem anderen zu spielen beginnen.

Um Verbindungen zu erstellen, ich habe einen Server-Code, der nur auf localhost hört: 8000 und Zuordnen Team Werte zu den Kunden, wie sie ankommen. Nach dem Anschließen machen Kunden ihre Bewegung unter Kontrolle der Admin.

Die Frage ist, dass, wenn ich versuche, meinen Code Arbeit im Browser um es mit dem folgenden Fehler fehl:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8000 connect,resolve)

Auch wenn ich meine eigene Politik erstellt haben, zunächst nur Socket-Zugriffsberechtigung auf die Code-Basis meines Projektordner (file:///home/xxx/projects/-) gewähren, nachdem sie nicht i gewährt funktionierten alle Berechtigungen von alle Code-Basis. Ich habe versucht, meine Richtliniendatei Platzierung sowohl im Home-Verzeichnis und im gleichen Verzeichnis, in dem mein Applet-Code befindet.

Schätzen Sie irgendwelche Tipps, danke.

War es hilfreich?

Lösung

standardmäßig ich denke, es sucht nach einer Datei mit dem Namen .java.policy in Ihrem Home-Verzeichnis

können Sie die Datei /lib/security/java.security überprüfen, um zu sehen, wo es aussieht. überprüfen Sie die Schlüssel mit der Bezeichnung policy.url.n

Andere Tipps

Sie können die Position der Sicherheitsrichtliniendatei festgelegt, indem Sie diese Befehlszeilenoption mit

-Djava.security.policy=policyfilepath

mit dem java Befehl.

Sie können aber auch diese propery mit dem System.setProperty() Verfahren eingestellt.

Legen Sie die Richtliniendatei, wo die JRE ist.

Zum Beispiel meine Richtliniendatei unter C: \ Programme \ Java \ jre1.6.0_01 \ lib \ security

Ich empfehle die Same Origin Policy respektieren. Auswirkungen auf die Sicherheit sind nicht unbedingt offensichtlich bei den besten Zeiten. Auch hat ein Applet mit Standardberechtigungen bessere Bedienbarkeit und soll leichter sein, aufrecht zu erhalten.

Wenn Sie eine Erlaubnis zu einer bestimmten JAR (Code-Basis) gewähren, dies funktioniert nur, wenn der gesamte Ausführungsstapel von Anfang des Fadens zu der Aufruf-Methode in dieser Code-Basis / Schutz-Domäne ist.

Wenn Ihre Methode alibrary ist, und Sie sind sicher, dass Sie den Vorgang sicher zuzugreifen, können Sie einen Priveledged-Block verwenden, die im Wesentlichen stellt sicher, dass der Teil des Stapels Anruf des Block nicht in der Zugriffs Berechnung berücksichtigt wird.

Privilegierte Block, wie hier beschrieben:

http://docs.oracle.com/ JavaSE / 6 / docs / technotes / guides / security / doprivileged.html

Grüße Bernd

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top