Applet FTP Upload AccessControlException

HeX

Mitglied
Guten Tag,

ich habe ein Applet geschrieben das Dateien per FTP uploaden sollen, dazu nutze ich das apache.commons package.

Das Applet habe ich fein mit Eclipse gepackt und danach selbst Zertifiziert.
Läuft wunderbar in Eclipse und local unter Chrome und Firefox.
Nun funktioniert es nicht wenn Ftp Server ein anderer ist als der Webserver.
Habe gelesen das ein Applet nur zwischen Ursprungsserver und Client kommunizieren darf, gibt es einen Weg das zu umgehen?

Hier nochmal die Exeption beim Aufruf von
Code:
client.connect(hostname)
;

Code:
java.security.AccessControlException: access denied
(java.net.SocketPermission  hostname resolve)
 

L-ectron-X

Gesperrter Benutzer
Du musst das Applet signieren, damit der Benutzer gefragt wird, ob er gestattet, dass sich das Applet mit einem fremden Server verbindet.

BTW ist eine direkte FTP-Verbindung mit einem Applet immer ein Sicherheitsproblem, wenn die Verbindungsdaten hart in den Code geschrieben werden.
 

HeX

Mitglied
Also signiert (zertifiziert^^) ist es :)

Die Verbindungsdaten sind nicht direkt fest im code, sondern werden über den param tag übergeben.

Aber warum funktioniert es wenn Webserverdomain = FTPserverdomain ist, aber sobald diese unterschiedlich sind kommt diese Exeption.

Kann ich sowas über die Policyfile regeln?
 

L-ectron-X

Gesperrter Benutzer
Also signiert (zertifiziert^^) ist es :)
Bekommst du die Anfrage von der JRE, ob du da Zertifikat akzeptierst?

Die Verbindungsdaten sind nicht direkt fest im code, sondern werden über den param tag übergeben.
Ist ja noch schlimmer, das ist ein riesiges Sicherheitsproblem! Jeder kann sich mit den Daten in den Server einloggen und so richtig schlimme Sachen anstellen. :eek:

Aber warum funktioniert es wenn Webserverdomain = FTPserverdomain ist, aber sobald diese unterschiedlich sind kommt diese Exeption.
Benutzt du eine externe FTP-Bibliothek? Die muss auch signiert werden.

Kann ich sowas über die Policyfile regeln?
Das macht keinen Sinn.
 

HeX

Mitglied
Hier erstmal ein kleiner Beispielcode der auch nicht funktioniert:

Java:
import java.applet.Applet;
import java.awt.Graphics;

import org.apache.commons.net.ftp.FTPClient;

public class GUI extends Applet {
	private static final long serialVersionUID = 3723988290817159680L;
	public String host = "";
	String s = "";	
	
	@Override
	public void init() {

		host = getParameter("host");
		s += "connect to "+host+" ";
		
		FTPClient client = new FTPClient();
		try {
			client.connect(host);
			if(client.isConnected() == true)
			{
				s += "OK";
			}
			else
			{
				s += "Error!";
			}
			
			
		} catch (Exception e) {
			s += e.getMessage();
		} 
		
		
	}
	public void paint (Graphics g) {
	    g.drawString (s, 15, 25);
	  } 
}

Ja, ich nutze die apache.commons Bibo, dachte die wird mit Signiert wenn ich die mit in die Jar packe,
eine Meldung vom Browser bekomme ich auch immer :)

Ist ja noch schlimmer, das ist ein riesiges Sicherheitsproblem! Jeder kann sich mit den Daten in den Server einloggen und so richtig schlimme Sachen anstellen.
Mit ist schon klar das es ein Sicherheitsproblem ist, nur wie lässt sich das besser lösen wenn ich die Verbindungsdaten von einem WebCMS bekomme?
 

L-ectron-X

Gesperrter Benutzer
Wie lautet denn die Fehlermeldung?
Ich habe keinen vernünftigen Tipp für dich, was die Absicherung der Verbindungsdaten angeht.
Wahrscheinlich ist es der falsche Weg.
 

HeX

Mitglied
Die Fehlermeldung steht in meinem ersten Post ;)

Aber Danke für den Tipp das die Bibo von apache.commons noch signiert werden muss, dann klappt es auch mit anderen Servern.

Wenn jemand die Verbindungsdaten bekommt ist das auch nicht schlimm, diese werden jedem intern persönlich zugeordnet und die haben nur Zugriff auf einen Ordner.
Und ganz in Klartext werden die auch nicht übertragen, sind immerhin Base64 Codiert, nicht viel aber besser als nix.
 

Ähnliche Java Themen

Neue Themen


Oben