HTTP Highscore Datenbank (Java <-> PHP)

frostbyte

Aktives Mitglied
Hallo,

Ich habe einige kleine Spiele, bei denen man in einem Spiel eine gewisse Punktzahl erreichen kann. Ich hatte dann eine kleine Datenbank online gebaut, in die man sich eintragen kann, letztlich mit:
Java:
name = JOptionPane.showInputDialog("Dein Name bitte");
URL url = new URL("http://example.com/highscore/score_speichern.php?spiel="+spiel+"&name="+name+"&punkte="+punkte);
url.openStream();

Kurze Zeit darauf machte mich jemand darauf aufmerksam, dass das ganze natürlich nicht sehr sicher sei, jeder könnte einfach irgendwelche Punkte abschicken.

Das ganze würde ich jetzt gerne neu gestalten, so richtig mit Anmeldung (Benutzername und Passwort) sowie Profilseiten für jeden, also dass man sehen kann, welche Punkte man in meinen Spielen erreicht hat.

Wie schaffe ich es, diese Übertragung sicher zu machen? Leider habe ich kein SSL, ansonsten wäre die Sache ja eigentlich recht einfach. Durch irgendwelche Codes oder so?


Und gibt es eine einfache Möglichkeit per Javabefehl eine Webseite im Standardbrowser zu öffnen?
 
T

tuxedo

Gast
Naiver Ansatz um die einfachen Cracks auszuschließen:

1) Statt "GET" mal "PUT" benutzen.
2) Die Daten mit Java verschlüsseln (langer XOR Schlüssel wäre das einfachste) und dann mit PUT zum Server schicken der das ganze wieder entschlüsselt. Nur der weiß erstmal wie man das entschlüsselt.

Letzten endes bleibt alles unsicher. Denn man kann ja deinen Java-Code decompilen, und dann weiß man auch wieder wie die Hoghscore übertragen wird, was dazu führt dass man das nachbauen kann. Aber geht man mal davon aus dass >95% der Leute das nicht tun werden, so ist der Ansatz schon recht sicher ;-). Denn Otto-Normal ScriptKiddie bastelt keine PUT-Anfrage (die man nicht so ohne weiteres mit einem "ich geb mal schnell die URL in den Browser ein und hacke meine Highscore" absetzen kann) und scriptet die verschlüsselung nach...



- Alex
 

frostbyte

Aktives Mitglied
Und auf der Serverseite komme ich an die Daten dann per POST?

Sicher wäre es wohl nie wirklich, denn jeder könnte einen Client schreiben, der Punktestände übersendet. Da hilft nur ein Schlüssel irgendwo im Client, der geheim bleiben muss.

Gut, das sollte dann eigentlich erstmal reichen …
 
Q

Quurks

Gast
Man könnte es auch so machen, dass man den Aufruf etwas abänert:
Java:
String hash=PseudoKlasse.md5(spiel+punkte+name+"Konstanter, zufälliger Ottonormalverbraucher-unbekannter Wert");
URL url = new URL("http://example.com/highscore/score_speichern.php?spiel="+spiel+"&name="+name+"&punkte="+punkte+"&hash="+hash);

Und dann auf Serverseite überprüfen ob die Angaben mit dem Hash überinstimmen.
 

frostbyte

Aktives Mitglied
Das Problem ist nur, dass Strings ja direkt in der .class Datei stehen, von daher kann man sich ausrechnen, wie man den erzeugt. Aber man kann ja noch auf die Punkte beim Hash etwas draufaddieren, sowas wie 3956, da kommt auch keiner. Gut, dann werde ich das mit einem gesalzenem Hash machen.
 
Q

Quurks

Gast
Ob du nun einen String oder eine Zahl nimmst ist im Prinzip egal(Es sei denn Strings stehehn so in der class-Datei,falls ich deinen letzten Post so vertsehen sollte).
Für eine Zahl könntest du dann noch sowas wie 31415*42+23 in den Programmcode schreiben, dann ist es nicht so einfach lesbar, es sei denn der Compiler optimiert das weg. Da würde ich dir dann allerdings ein ganzzahliges Ergebnis empfehlen, damit du keine Probleme mit evtl unterhsiedlichen genauigkeiten von PHP & JAVA bekommst
 

frostbyte

Aktives Mitglied
Muss ich mal schauen, wie das dann in der .class Datei steht, aber genau das hatte mir bei der ganz einfachen Geschichte ja schon den Hals gebrochen, da man den kompletten GET String da einfach ablesen konnte.
 
Q

Quurks

Gast
Aber eins muss dir klar sein: Auslesen kann man das (fast) immer, du kannst Javaprogramme immer dekompilieren. Aber ob das die Mehrzahl der Nutzer macht ist mehr als fraglich...
 

frostbyte

Aktives Mitglied
Das letzte Mal hatte nur ein Kumpel (eher bewandert in C und Python) die .class im Texteditor geöffnet und direkt den Code gesehen. So wäre das "sicher" genug.
 
Q

Quurks

Gast
Naja, man sieht direkt aus der Javaklasse manches, aber nicht den gesamten Code.
Evtl hattest du ein Jar-Archiv, in welchem noch .java Dateien lagen? (Irgendein Prgm packt die automatisch mit rein)
 

Empire Phoenix

Top Contributor
Ich gehöre zu den eluten die decompiler benutzen ^^ habe dait vmex für source maps so umgebaut das der decompileshuts der maps nciht mehr geht. Allerdings brach man dann mindestens noch etwas Ahnung von Java um das ding wieder compiliert zu bekommen. Wirklcihs ciher bekommstes nnur wennd ud ei spiel berechnungen auffen Server durchführst ^^ aber das sit etwas übertreibe denke ich mal, also einfach versuchen das so unnachvollziehbar zu bauen wie geht. Auch keinen festen key nehmen, sondern den zb aus einem UnixTimestamp + alten maxhighscore generieren (Server seitig dann aber bedenken ungenauigkeiten von 2,3 minuten sind schon mal dabei)
 
Q

Quurks

Gast
Dann noch zb variable Sachen hinzuaddieren (Zb Zufallszahl) und die dann mit 0 multiplizieren oder potentieren
 

Empire Phoenix

Top Contributor
Sehr lustig scherzkeks, sinn der aktion mit dem timestamp ist ja das sowohl server als auch client diese daten habe ohne miteinander kommunizieren zu müssen,
 
Q

Quurks

Gast
Was passiert wenn du eine Zufallszahl mit 0 multiplizierst? Was kommt immer raus?
Was passiert wenn du eine Zufallszahl mit 0 potetierst? Was kommt immer raus?

Genau dieser Verwirrungseffekt soll ja eintreten bei Quellcodelesen
 

Empire Phoenix

Top Contributor
Achso du meinst das beim decompilieren das ganze komplizierter aussieht.

Meine idee zihlt halt darauf ab das das Zeitfenster in dem ein gesniffter Wert gelten würde verkürzt wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Highscore online speichern Netzwerkprogrammierung 14
F Highscore ( online ) Netzwerkprogrammierung 70
E Socket Online Highscore. Vorgehensweise Netzwerkprogrammierung 9
B HTML mit Webserver und Datenbank verbinden Netzwerkprogrammierung 2
JavaWolf165 Mini-Datenbank durch Link Netzwerkprogrammierung 6
S Client Anwendung mit zentraler SQL-Datenbank Netzwerkprogrammierung 3
F String in Datenbank speichern Netzwerkprogrammierung 1
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
N Client-Server-Datenbank Netzwerkprogrammierung 13
E Verbindung zu SQL-Datenbank auf einem Server Netzwerkprogrammierung 13
X SSH Verbindung zu Remote Datenbank Netzwerkprogrammierung 2
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
G DDD Datenbank Schema Netzwerkprogrammierung 2
U Allgemeiner Ratschlag zu meinem Programmunterfangen mit zentraler Datenbank Netzwerkprogrammierung 12
D Content einer email in sql-datenbank speichern Netzwerkprogrammierung 9
M RMI direkte Verbindung mit einer Mysql datenbank Netzwerkprogrammierung 13
D RMI Aufruf und danach Datenbank ? Netzwerkprogrammierung 10
N RMI und Datenbank Objekte Netzwerkprogrammierung 3
P Praktikumsarbeit: Zugriff Active Directory/Server/Datenbank Netzwerkprogrammierung 15
P Massen emails verschicken an Kunden die in Datenbank sind Netzwerkprogrammierung 4
K Datenbank-anbidung ueber php Netzwerkprogrammierung 3
A Zugriff auf Inet Datenbank? Netzwerkprogrammierung 4
O Anfragen an Online-Datenbank stellen, z.b. wetter.com Netzwerkprogrammierung 6
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
T VPN-Verbindung über Java Netzwerkprogrammierung 4
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
C Datensammlung mit Java RMI Netzwerkprogrammierung 0
K Java Jsoup : OnLoad Netzwerkprogrammierung 0
S Java Chat Server Netzwerkprogrammierung 8
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
P Chat in Java Netzwerkprogrammierung 3
C java.net.ConnectException: Operation timed out? Netzwerkprogrammierung 2
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
T curl request in java umwandeln Netzwerkprogrammierung 4
M Socket Java Server: NullPointerException Netzwerkprogrammierung 4
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
L Java RMI Objekt konsistenz Netzwerkprogrammierung 1
H Portforwarding umgehen in Java? Netzwerkprogrammierung 5
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
E HttpUrlConnectionExample cannot be resolved to a type / Java 8 Netzwerkprogrammierung 1
F Socket Java Server mit Android App, Antwort vom Server an App Netzwerkprogrammierung 5
M Java-Programm aus dem Web laden Netzwerkprogrammierung 3
S HTTP-Requeste von Browser mit Java sniffen? Netzwerkprogrammierung 9
J access denied (“java.net.SocketPermission”…) mit Java 8 Netzwerkprogrammierung 1
N CURL requests in Java Netzwerkprogrammierung 6
P Kritische Java-Anwendung und Citrix veröffentlichen Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
1 Netty NIO oder Java IO Netzwerkprogrammierung 2
1 Via Java mit WLAN Netzwerken verbinden Netzwerkprogrammierung 5
J Java Service Wrapper Netzwerkprogrammierung 1
K Mit Java ASPX Webseite fern steuern Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben