Was ist RMI?
-
Hi
kommt auf die architektur an. Ich nehm mal an das es sich dabei um eine 3T oder höher handelt. Webclient <--> Webserver <--> Irgend ein server(z.B. APPServer wie JBoss) <--> noch ein server(z.B. DB MySQL).
Wo soll das sicherheits problem lieben wen der Webserver irgendwelche RMI methoden aufruft die auf einem anderen server liegen, wenn diese daten nicht durch Internet geroutet werden? Auserdem was bedeutet traffic in einem internen 100 Mbit oder 1gbit netz? Kost doch nix wenn der traffic im server raum statfindet und nicht über kostenpflichtige leitungen im internet.
gruss
-
Coder87 schrieb:
Ich habe schon etwas mehr zu diesem thema gefunden. Verstehe ich es richtig das es dabei auf einem sever die funktionen/methoden wie getName(), doSomething() liegen und von einem Webserver aufgerufen werden? Ist das nicht gefährlich oder ein sicherheitsrisiko? Entstehen dadurch nicht unsummen an traffic? Also wenn jeder getter/setter aufgerufen wird?
naja, wenn's gut gemacht ist werden sicherlich mehrere aufrufe zusammengepackt, komprimiert, gecached usw. um die anzahl der netzwerkzugriffe zu minimieren. aber ein sicherheitsrisiko ist es zweifelsohne. man denke nur an rpc-würmer wie w32 blaster...
-
Es ist weder schlimmer vom Traffic her noch gefährlicher. Wo soll denn der Unterschied liegen, dass ich ne Methode aufrufe per RMI oder dass ich ein Objekt schicke und damit den anderen Rechner veranlasse, etwas zu tun?
Der Blaster hat AFAIK nen Bufferoverflow ausgenutzt, so was kann dir überall passieren (in Java allerdings nicht).
-
Optimizer schrieb:
so was kann dir überall passieren (in Java allerdings nicht).
aber es kann schon möglich sein, mit buffer overflows die java-vm abzuschiessen
-
Moin Moin
Es sollen natürlich nur wichtige Methoden ausgelagert werden.
Bsp: Verschlüsselung für Passwörter.
Sonstige Methoden die eventuell oft geändert werden ohne das die Clients ein neues Programm bekommen müssen.
Verbindung dürfte sogar über ssl möglich sein.cu CodeHure
-
net schrieb:
Optimizer schrieb:
so was kann dir überall passieren (in Java allerdings nicht).
aber es kann schon möglich sein, mit buffer overflows die java-vm abzuschiessen
Das setzt Programmierfehler in der VM voraus. Vergleichsweise unwahrscheinlich, dass dort noch ein solcher Fehler zu finden und die eine VM ist Basis aller Java Programme.
Auch stell ich es mir schwierig, dass per RMI auszunutzen. Da muss schon im richtigen Teil ein Fehler sein. Tatsächlich gab es aber echt mal ein paar kleinere Sicherheitslücken. Aber *dein* Programm hat das nicht und das ist der Punkt.
-
Optimizer schrieb:
Aber *dein* [java] Programm hat das nicht und das ist der Punkt.
ach, java verlagert das nur auf eine andere ebene. das schlecht gecodete java-programm steigt mit 'ner exception aus. aber stimmt schon: fremden code einschleusen über buffer overflows ist unter java (fast?) unmöglich
-
Welche bekannte software verwenden RMI?
Ist es auch möglich von einem Java client über das internet per rmi methoden aufzurufen? Dabei müsste dann doch einiges an traffic anfallen?
-
net schrieb:
Optimizer schrieb:
Aber *dein* [java] Programm hat das nicht und das ist der Punkt.
ach, java verlagert das nur auf eine andere ebene. das schlecht gecodete java-programm steigt mit 'ner exception aus. aber stimmt schon: fremden code einschleusen über buffer overflows ist unter java (fast?) unmöglich
Verlagern ist IMHO nicht ganz korrekt. Der Punkt ist der: Wenn ich 29387 Programme schreibe, dann habe ich mindestens ebenso viele Möglichkeiten, Bufferoverflow-Fehler einzubauen. Wenn ich diese 29387 Programme für die VM schreibe, dann hab ich nur noch in der VM selber ein paar Möglichkeiten, Fehler zu machen, die wirklich böse ausgehen.
-
Moin Moin
Coder87 schrieb:
Welche bekannte software verwenden RMI?
Keine Ahnung!
Coder87 schrieb:
Ist es auch möglich von einem Java client über das internet per rmi methoden aufzurufen?
Ja!
Coder87 schrieb:
Dabei müsste dann doch einiges an traffic anfallen?
Warum? Wenn die Schnittstelle gut durchdacht ist und nicht notwendige Operationen auf dem Client durchgeführt werden und nun eine isProgramStartAllow(String hashFromExe) aufgerufen wird?
Es werden sicherlich nicht alle Methoden aufrufe über das Netz geschickt sondern nur die Daten bzw. Fähigkeiten die zentral gelagert werden müssen.
cu CodeHure
-
Optimizer schrieb:
RMI steht für Remote Method Invocation und ist eine ähnliche Netzwerktechnologie wie der Remote Procedure Call von Microsoft, allerdings Plattformunabhängig. Wahrscheinlich gibt Wikipedia da was her.
Was ist denn RPC von Microsoft?