Ich brauche ein Applet, um einen Socket zu öffnen und mit einem Server zu kommunizieren, der auf den lokalen Host abhört, auf den das Applet heruntergeladen wurde (der Endbenutzer).Können signierte Applets mit einem anderen Host verbunden werden, von dem sie stammen?
im Gegensatz zu dem, was ich über Applet Sicherheit gelesen haben, so scheint es, dass selbst signierte Applets keine Socket an einen anderen Host, von dem sie (auf der gleichen Maschine es funktioniert perfekt) heruntergeladen wurden, öffnen
I zertifiziert das Applet mit -selfcert, signiert es jarsigner verwenden und immer noch, wann immer es eine Buchse auf einen anderen Host zu öffnen versucht, erhalte ich:
Java.lang.Exception: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:9999 connect,resolve)
ich habe sogar versucht die Java-Policy-Datei zu ändern, obwohl mit signierte Applets es ist nicht dazu verpflichtet:
grant codeBase "http://applethost:8080/socket" { permission java.security.AllPermission; permission java.lang.RuntimePermission "usePolicy"; };
Was das Abkommen mit sigend Applets ist, können sie connet auf einen anderen Host oder nicht?
@John, es scheint, dass gerade Erteilung von Erlaubnis java.security.AllPermission; funktioniert, aber das ist immer noch der einzige Weg, um es zum Laufen zu bringen. Ich habe das Applet seine codeBase drucken lassen und es scheint in Ordnung zu sein. Sehr frustrierend, aber zumindest dank dir weiß ich, dass es in der Tat sicherheitsrelevant ist und nicht irgendein seltsames Problem. – adilei
@John, ich werde diese Antwort akzeptieren, da es wahr ist - es ist möglich, dass ein Applet einen Socket zu einem anderen Host öffnet. Ich werde jedoch eine Follow-up-Frage aufstellen, wenn Sie interessiert sind, mir dort zu folgen. Prost, Adi. – adilei
Wie können Sie "AllPermission" programmatisch gewähren? Was ist der Sinn eines Sicherheits-Managers, um die Ausführung von bösartigem Code zu verhindern, wenn der Code sich selbst die Erlaubnis geben kann, das zu tun, was er will? Es ist sogar möglich, es sollte nicht sein !. @ John, wenn Sie dies lesen, können Sie bitte das letzte Geschoss löschen, um zu verhindern, dass andere Leute den falschen Weg gehen, indem Sie versuchen, etwas zu implementieren, was der Java-Standard explizit verhindert. Entweder das oder erklären, warum ich falsch liege. Vielen Dank! –