Anmeldedaten im Programm "verstecken"

BRoll

Bekanntes Mitglied
Also ich sitz grad vor einem Problem dass ich mir logisch schon garnicht
vorstellen kann wie es funktionieren soll.

Also wenn ich mit einem Java Programm auf eine Datenbank zugreife,
zb. für online Highscores oder sowas, dann benötige ich dazu ja
die Anmeldedaten (benutzer/passwort usw).

Das steht ja dann aber im Quellcode drin:

Java:
 try{
	    	   Class.forName ("com.mysql.jdbc.Driver").newInstance ();
             Connection  connection = DriverManager.getConnection (dbUrl, userName, password);
              } 
              catch (Exception e){
               System.out.println(e );
               System.err.println ("Cannot connect to database server");
              }

Wenn ich das jetzt als Jar exportiere, und jemand gebe, kann dieser ja theoretisch
mit einem decompiler den quellcode auslesen und damit an die anmeldedaten kommen.

Wie kann man sein Programm (bzw. diese heikle Stelle) davor schützen?
Ich hab keine Ahnung wie man das machen könnte,
weil nur einen Benutzer auf der Datenbank mit nur Leseberechtigung bringt ja nichts,
wenn das Spiel auch Highscores schreiben können soll.

Ich hab schon überlegt ob man da mit PHP eine Brücke bauen soll,
aber damit hab ich schlechte Erfahrungen auf meiner Website gemacht
(manche Highscores wurden einfach weggelassen).

Gibts da einen einfacheren Weg oder ist das zu aufwendig/kompliziert?

mfg BRoll
 
G

Gast2

Gast
Wie kann man sein Programm (bzw. diese heikle Stelle) davor schützen?
Gar nicht. Zugangsdaten gehören nicht in den Clientcode. Sobald der Client direkten Zugriff auf die Datenbank hat kann man da schindluder mit treiben.

Ich hab schon überlegt ob man da mit PHP eine Brücke bauen soll
Das wäre eine Möglichkeit. Das verhindert schonmal dass der Client direktzugriff hat. Dieser Webservice muss aber nicht zwangsläufig in PHP geschrieben sein.
 

BRoll

Bekanntes Mitglied
Gar nicht. Zugangsdaten gehören nicht in den Clientcode. Sobald der Client direkten Zugriff auf die Datenbank hat kann man da schindluder mit treiben.

Ja aber wie soll sich dann der Client mit der Datenbank verbinden ohne die Infos?

Mit ner Brücke kann man ja diese Infos verlagern, wo sie sicher sind (zb auf dem Server).

Ich werds mal mit PHP versuchen, was gibt es denn da noch für Alternativen?
 
N

nillehammer

Gast
EikeB hat gesagt.:
Gar nicht. Der Client schickt seinen Highscore an den Server/Webservice, der trägt den Highscore dann in die Datenbank ein.
Hat man damit wirklich was gewonnen? Statt einen direkten INSERT auf die Datenbank abzusetzen, könnte doch sicher auch der entsprechende HTTP-Post gefaked werden, um sich einen höheren HighScore zu erschleichen.
 
G

Gast2

Gast
Das man damit nicht gefälschte Highscores verhindern kann ist klar. Aber man verhindert sowas:
SQL:
SELECT username, password FROM admin_users;
Durch den Webservice stellt man sicher dass ausschließlich Highscores eingetragen werden oder Highscores abgefragt werden.

Um wirklich sicherzustellen dass Highscores nicht gefälscht werden, muss man schon fast soweit gehen und die gesamte Spiellogik auf dem Server laufen lassen, nur dann kann man sicher sein dass der User auch wirklich das erreicht hat was der Highscore aussagt.
 
N

nillehammer

Gast
EikeB hat gesagt.:
Um wirklich sicherzustellen dass Highscores nicht gefälscht werden, muss man schon fast soweit gehen und die gesamte Spiellogik auf dem Server laufen lassen, nur dann kann man sicher sein dass der User auch wirklich das erreicht hat was der Highscore aussagt.
Danke, das wollte ich lesen :D. Ich glaube nämlich, dass das das verklausulierte Grundproblem bei der Frage von BRoll ist.
 

BRoll

Bekanntes Mitglied
Danke, das wollte ich lesen :D. Ich glaube nämlich, dass das das verklausulierte Grundproblem bei der Frage von BRoll ist.

Jein nicht ganz, soweit konnte ich mir das schon selber zusammenreimen,
bloß umso mehr auf dem server gemacht wird, umso höher die Belastung
bei vielen Spielern.

Das schummeln wird man wohl nie richtig verhindern können, weil irgendwo
muss sich ja die Katze in den Schwanz beissen.

Ich programmier jetzt mal eine Brücke mit PHP, und schau wie gut das funktioniert.
 

freez

Top Contributor
Ich hab schon überlegt ob man da mit PHP eine Brücke bauen soll,
aber damit hab ich schlechte Erfahrungen auf meiner Website gemacht

Je nachdem wie wichtig diese Highscores sind würde ich über eine Authentisierung nachdenken. Den Usern gibst du persönliche Zugangsdaten und die Übertragung an deinen Webservice macht du natürlich per SSL. Somit kannst du dir sicher sein, dass die Highscores vom richtigen User eingetragen sind, und ein auslesen der Post / Get Parameter per Sniffer ist dann auch nicht möglich.

Lohnt sich das betrügen an der Stelle nicht, weil ich z.B. nichts gewinne wenn ich besonders gut bin, dann würde ich mir das schenken.
 

Empire Phoenix

Top Contributor
Nen weiterer schritt wäre das man komplette replays mit der highscore hochläd, und andere spieler sich diese angucken können.
Ist je nach spiel nen nettes feature für neulinge um tricks zu lernen und man hat eine realtiv gute sicherheit weil die besten 10 scores aller wahrschenlichkeit nach sehr oft verifiziert werden.
 

Templarthelast

Bekanntes Mitglied
Mann kann ja zusätzlich zum eigentlich HighScore ein Hashwert inklusive Prüfziffer übergeben, was verhindern sollte, dass sich einfach jeder einen höheren Highscore erschleicht.
 

BRoll

Bekanntes Mitglied
Mann kann ja zusätzlich zum eigentlich HighScore ein Hashwert inklusive Prüfziffer übergeben, was verhindern sollte, dass sich einfach jeder einen höheren Highscore erschleicht.

Aber den Prüfwert könnte man dann auch auslesen bzw. die Stelle im Programm
suchen wo der erstellt wird, bzw. da wo er eingelesen wird.???:L

Das mit den Replays ist mir zu schwierig, erstmal müsste ich wissen wie man ein video
in java macht und dieses dann auch in der datenbank aufbewahren. Mit nem Screenshot
wäre es noch denkbar und gut machbar für mich.

Ich glaub an das Gute in den Menschen, dass niemand schummeln wird :D
 

Templarthelast

Bekanntes Mitglied
Aber den Prüfwert könnte man dann auch auslesen bzw. die Stelle im Programm
suchen wo der erstellt wird, bzw. da wo er eingelesen wird.???:L

Das mit den Replays ist mir zu schwierig, erstmal müsste ich wissen wie man ein video
in java macht und dieses dann auch in der datenbank aufbewahren. Mit nem Screenshot
wäre es noch denkbar und gut machbar für mich.

Ich glaub an das Gute in den Menschen, dass niemand schummeln wird :D

replay != video.

In einem Replay speicherst du die Spielabläufe wie z.B. Bewegung und Aktionen der Spieler- und NPCfiguren. In einem Video dagegen speicherst du das Bildschirmbild.

Mann kann theoretisch alles mit dem Quellcode auslesen und Manipulieren. Deine einzige Möglichkeit dies zu unterbinden wäre die Spielmechanik auf einem Server laufen zu lassen und nur vorbereiteten Input des Spielers entgegenzunehmen bzw. das momentane Bild zurückzugeben. Bei dieser ganzen Diskussion stellt ich allerdings die Frage nach Notwendigkeit.

Brauchst du für dein Spiel ,das (ohne dein Spiel schlecht machen zu wollen) möglicherweise nur 100 Leute je spielen werden, Mechaniken, die jeglichen noch so komplexen Eingriff in das HighScoresystem unterbinden?
 
G

Guest2

Gast
Moin,

das Replay müsste nicht zwangsläufig als Video gespeichert werden, sondern als eine Art Savegame mit dem kompletten Spielablauf (Zeiten, Tastendrücke, Ereignisse). Wenn Du den Server dann auch in Java aufsetzt, kannst Du dieselben Klassen wie im Client nutzen (Spiellogik), um auf dem Server das Replay zu verifizieren.

Aber natürlich könnte dann immer noch jemand einen Savegame Generator schreiben... ;)

Viele Grüße,
Fancy

(Ups, zu langsam)
 
T

Tomate_Salat

Gast
's könnte auch jemand deinen Server hacken und die datenbank droppen :D.

Wenn jemand will, dann bekommt er manipulierte Datensätze in deine Datenbank. Spätestens wenn er das Spiel an sich hackt, kann er den Spielablauf manipuilieren und braucht nichtmal die Übertragung anzugreifen ;-). Szenario über Szenario.

Mach doch ein Spiel aus dem Spiel ;-). Stell es wenns fertig ist hier zu Verfügung mit der bitte, manipulierte Daten in die Highscore zu bekommen :D
 
N

nillehammer

Gast
Tomate_Salat hat gesagt.:
Mach doch ein Spiel aus dem Spiel . Stell es wenns fertig ist hier zu Verfügung mit der bitte, manipulierte Daten in die Highscore zu bekommen
Au ja! Ich bin dabei! :rtfm::toll::applaus:
 

BRoll

Bekanntes Mitglied
Mach doch ein Spiel aus dem Spiel ;-). Stell es wenns fertig ist hier zu Verfügung mit der bitte, manipulierte Daten in die Highscore zu bekommen :D

Meinst wirklich dass das ne Herausforderung wäre?

Decompiler > PHP Link raussuchen > aufrufen mit gewünschten Infos

Wenns wenigstens anspruchsvoll wäre, dann wäre es noch lustig aber
es ist (noch) zu einfach zu hacken. :D
 

BRoll

Bekanntes Mitglied
replay != video.

In einem Replay speicherst du die Spielabläufe wie z.B. Bewegung und Aktionen der Spieler- und NPCfiguren. In einem Video dagegen speicherst du das Bildschirmbild.

Mann kann theoretisch alles mit dem Quellcode auslesen und Manipulieren. Deine einzige Möglichkeit dies zu unterbinden wäre die Spielmechanik auf einem Server laufen zu lassen und nur vorbereiteten Input des Spielers entgegenzunehmen bzw. das momentane Bild zurückzugeben. Bei dieser ganzen Diskussion stellt ich allerdings die Frage nach Notwendigkeit.

Ok stimmt, das mit dem Replay habe ich falsch verstanden.
Die einzelnen Koordinaten/Bild Infos zu einem bestimmten zeitpunkt
sind viel kompakter und kleiner als ein video.



Brauchst du für dein Spiel ,das (ohne dein Spiel schlecht machen zu wollen) möglicherweise nur 100 Leute je spielen werden, Mechaniken, die jeglichen noch so komplexen Eingriff in das HighScoresystem unterbinden?

Bei der Notwendigkeit von so einem Sicherheitssystem, geht es mir nicht darum
dass das Spiel dann von vielen gespielt wird und zudem sicher ist vor Hackern,
sondern allein die Übung.
Hauptsächlich will ich diese Mechanismen verstehen und selber programmieren können.
Ich möchte einfach mal aus jedem Bereich der Programmierung etwas lernen und machen
können. Wie gesagt ich bin noch Anfänger und kenne viele Sachen noch nicht.
Hauptsächlich mach ichs aus Spaß am Programmieren, ich will aber später
beruflich programmieren :)
Bewerb mich demnächst auf ner dualen Hochschule um angewandte informatik zu studieren.
 
T

Tomate_Salat

Gast
Meinst wirklich dass das ne Herausforderung wäre?

PHP Link raussuchen > aufrufen mit gewünschten Infos

Tja, wenn du soetwas anbietest:
[c]http://meintollergameserverinphp.de/highscore.php?p=Tomate_Salat&score=Double.POSITIVE_INFINITY[/c]
Dann ist das Kinderkacke :D. Du musst schon die übertragung iwie absichern ;-)
 

BRoll

Bekanntes Mitglied
Tja, wenn du soetwas anbietest:
[c]http://meintollergameserverinphp.de/highscore.php?p=Tomate_Salat&score=Double.POSITIVE_INFINITY[/c]
Dann ist das Kinderkacke :D. Du musst schon die übertragung iwie absichern ;-)


Das hab ich ja gemeint dass das zu einfach ist :D

Und genau nach dem "iwie absichern" frag ich ja hier,
aber anscheinend weiß doch niemand wies genau geht.
Und das ist ja meine Frage/Problem :D
 
T

Tomate_Salat

Gast
Und genau nach dem "iwie absichern" frag ich ja hier

Ja lesen hilft ... mach es einfach irgendwie ;-) :D.

Ne also, da gibt es viele Möglichkeiten soetwas abzusichern. Ich würde dem Client einen Public Key (z.B. RSA) mitliefern und daraus iwie was bauen. Habe in den Bereichen bisher leider hauptsächlich nur theoretische Erfahrungen.

Schau dir dochmal soetwas wie hypride verschlüsselung, zertifikate, etc. an. Könnte vllt en wenig übertrieben sein für eine HighScore aber von dem Wissen kannste später sicher mal profitieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Scream_ilias Auf einer Website die anmeldedaten eingeben Allgemeine Java-Themen 9
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
kodela Programm hängt in der Ereigniswarteschlange Allgemeine Java-Themen 13
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben