# Sicherheit



## Christian21 (14. Dez 2007)

Hallo liebe Java-Gemeinde

Ich habe eine Frage bezüglich Sicherheit bei Programmen die auf einen Server zugreifen.

Angenommen es handelt sich um ein Programm welches Daten an einen Server senden sollen (einfacher zugang über FTP), der Passwortgeschützt ist, und dieses Programm Öffentlich ist (für jedermann zugägnlich). Wie sicher ist es, das man das PW des Servers nicht rausfindet ? 

Es gibt doch Programme mit denen kann man eine *.class Datei in eine *.java umwandeln, also kann eigentlich "jeder" den Source sehen. 

Ich habe in der JAVA-API die Klasse "MessageDigest" gefunden, ist diese Klasse für solche Zwecke zu gebrauchen??

Java ist zwar kein Neuland für micht, aber dieses Thema schon. Hatte vorher noch nie so ein Problem. 

Ich würde mich schon sehr freuen wenn ihr mir sagen könntet wie man das PW im Programm am besten verschlüsselt, so dass es nahezu unmöglich ist es rauszubekommen.

lg Christian


----------



## madboy (14. Dez 2007)

Sicherheit ist immer relativ. Wie viel Aufwand bist du bereit zu treiben bzw. wie dringend wollen "böse" Leute an irgendwas rankommen?

FTP ist hier gänzlich ungeeignet (zumindest ohne zusätzliche Sicherungsmaßnahmen).
Um an das Passwort zu kommen muss ein potentieller Angreifer nicht mal in deine Klassen schauen, er startet einfach dein Programm und lässt nebenher einen Netzwerksniffer laufen und er hat das Passwort im Klartext.

MessageDigest wird für Verschlüsselungen verwendet, ist aber nicht zu gebrauchen für deine Zwecke (also Quellcode zu verschlüsseln).

Folglich läuft alles darauf raus: mit was für Angriffen rechnest du und wie wichtig sind die zu schützenden Daten.

Edit: vielleicht hilft dir das hier weiter: http://www.java-forum.org/de/viewtopic.php?t=19245


----------



## Gast (14. Dez 2007)

Also eigentlich sind die Daten nicht wichtig.
Ich will nur endlich auch mal lernen wie man Server anspricht mit Java, deswegen mach ich das nur zu Übungszwecken.
Es soll hier nur ein einfaches Programm sein das keine wichtige Daten auf einen Server sendet. 

Leider hab ich selbst keinen Server, ich habe bloß von meinem Internet Anbieter 20mb Webspace auf einem stink normalen Server (es läuft kein PHP oder sonstige Programme drauf).

Normalerweise würde man soetwas mit einer Datenbank lösen oder ?? 

Also konkret würd mich interessieren, wie man soetwas realisiert, wenn ein Programm auf einen Passwort-geschützten Server zugreifen soll/muss, bzw. ob man soetwas erst gar nicht macht und auf einen anderen Weg löst.


----------



## Hello_Java (14. Dez 2007)

Danke für den Link !! 
Aber was beudete "hart" coden 

Hab mich jetzt angemeldet   super Forum  :toll:


*Edit*

Falls jemand ein gutes Tutorial für Server/Client Anwendungen in Java hat bzw. über Socket und RMI, könntet ihr den bitte Posten  bin zwar scon am googlen, aber da stößt man auf mehr Foren mit Fragen, als auf Tuts.


----------



## Hello_Java (15. Dez 2007)

Eine Frage hätte ich nocht, will aber nicht extra einen Thread dafür eröffnen.

Hab jetzt ein kleiens Client/Server Programm erstellt, der Server stellt eine Methode zur verfügung. Funktioniert auch alles wunderbar, aber ich find in der API einfach keine Methode wie ich den Server schließe. Ich kann zwar die Verbindung zwischen Client und Server beenden, aber gibts für den Server eine Methode wie man ihn beendet ? Oder muss man das manuell per System.exit(0); machen ??


----------



## Prusik (15. Dez 2007)

versteh ich das richtig, dass du vom client aus einen Server beenden willst? nun, wenn das standartmässig so gänge, wäre das wohl eher etwas mühsam... vielleicht ist ja noch ein anderer client auf dem Server... Von der Applikationslogik her ist eigentlich ein Server etwas das einen Dienst zur Verfügung stellt, und das soll nicht vom client beendet werden kann.

Evtl. kannst du auf dem Server eine Methode machen shutmedown() oder so, das geht evtl. weiss ich aber nicht, hab ich noch nie gemacht...


----------



## L-ectron-X (15. Dez 2007)

Prusik hat gesagt.:
			
		

> ist eigentlich ein Server etwas das einen Dienst zur Verfügung stellt, und das soll nicht vom client beendet werden


Wie du sachon sagst, der Server ist ein Dienstleister. Bspw. zu Fernwartungszwecken könnte ein Client (mit entsprechenden Rechten) auch den Server herunterfahren.


----------



## Hello_Java (15. Dez 2007)

Hallo !

Sry ich glaub ich hab mich falsch ausgedrückt.

Ich meinte damit die Serveranwendung des Client/Server Programms das ich geschrieben habe zu beenden.

Ich finde nicht heraus wie ich den Server beenden kann  (muss nicht über den Client gehen), außer mit Strg + Alt + entf und dann den Java.exe Prozess zu beenden. 

Ich hab es jetzt mit einer Methode gelöst, die einfach nur System.exit(0); auf der Serveranwendung ausführt, dann beendet das Porgramm mit code 0


----------



## Wildcard (15. Dez 2007)

Server : Software die einen Dienst zur Verfügung stellt
Host : Hardware auf der ein oder mehrere Server laufen


----------



## Hello_Java (15. Dez 2007)

^^ Genau, und ich wollte wissen wie man den die Server.class beendet  bzw ob es einen anderen Weg als System.exit(0) gibt.


----------



## HoaX (15. Dez 2007)

dann bleicht dir nur alle nicht-deamon-threads zu beenden


----------



## Hello_Java (15. Dez 2007)

Danke für den Tipp!

Hab heute verschiedene kleine Tutorials zur Netzwerkrpogrammierung gelesen, aber hab ncoh einige Fragen.

Also das Programm was ich geschrieben habe, benutzt die RMI Klassen, für den Anfang sollte man aber doch besser mit Sockets beginnen bevor man sich mit RMI beschäftigt oder ? 
Was ich bis jetzt mitbekommen habe, ist das man mit RMI direkt Methoden auf dem Server ausführen kann, mit Sockets kann man nur Streams versenden, in Packetform, oder gibt es da auch die Möglichkeit direkt Methoden auszuführen die der Server zur Verfügung stellt ?? 

lg


----------

