PHP Punkteübergabe bestmöglich absichern?

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo zusammen,

habe mal wieder ne Frage an euch. Und zwar geht es um folgendes:

Wie ja hier zum Beispiel im Forum der Arcade-Modus drin ist, so laufen diese Portale ja immer gleich:
- Ein Flashgame wird auf der Seite eingeblendet, sobald das Spiel beendet ist und die Punktezahl feststeht, ruft es beispielsweise die index.php?do=newscore auf.
- Diese index-Datei übernimmt dann den Punktestand über nen POST-Parameter

Soweit also so gut...vom technischen funktioniert das auch alles und es gibt keinerlei Probleme.
Aber jetzt kommen natürlich die bösen Leute und haben hier einiges an Angriffsfläche um diese Punktzahlen zu manipulieren.

Daher jetzt die Frage: Wie sichere ich sowas bestmöglich ab? (mir ist durchaus bewusst, dass es nicht komplett geht ;))

Meine Ideen waren jetzt:

- Beim Start des Spieles ne Session eröffnen mit dem Namen des Spieles(damit nicht nachher die Punkte für ein anderes Spiel übermittelt werden können) und dem Startzeit(damit nicht einer die Startzeit vor 3 Wochen nutzen kann um Punkte für ein Spiel zu übermitteln).

- in der index-Datei den referer überprüfen, sodass also die URL wo die Punkte herkommen, auch wirklich stimmen


Habt ihr sonst noch Ideen was gemacht werden kann oder wo hier noch ne Sicherheit reinpassen würde? ;)
 
Hilft beides nichts ;)

Effektive Ansätze um es kompliziert zu machen, da muss man dann echt viel Zeit investieren:
  • verschlüsselte Datenübertragung (AES, XXTEA, RC4, usw.)
  • Flash obfuscaten (SWF Encrypt)
  • und viel Radomization: selbst die gleichen Übertragenen Daten sollten jedesmal anders aussehen
  • als Meisterklasse noch automatisiert täglich andere Implementierungen mit anderen Schlüsseln nutzen
 
- Diese index-Datei übernimmt dann den Punktestand über nen POST-Parameter
Naja, man sollte den Punktestand ja vielleicht nicht unbedingt im Klartext übergeben. Wenn das Flash-Programm das Ganze ein bisschen verschlüsselt, macht es die Manipulation schon mal deutlich schwerer. In die Verschlüsselung könnte man dann auch noch eine Session-ID oder Spiel-ID mit reincodieren, so dass die Server-Seite da ein paar Möglichkeiten hat, die Gültigkeit der übertragenen Daten zu überprüfen (z.B. kann für einen Spieldurchgang natürlich auch nur einmal ein Score übertragen werden).
Wenn dann am Ende eine Seite index.php?do=newscore&data=0x3a1367be35fd aufgerufen wird, weiß dein Skript auf der Server-Seite, was er mit diesen Daten anzufangen hat, ein böser Faker weiß aber nicht, was er an diesem Aufruf manipulieren muss, um einen höheren Score zu erreichen...
 
Wenn dann am Ende eine Seite index.php?do=newscore&data=0x3a1367be35fd aufgerufen wird, weiß dein Skript auf der Server-Seite, was er mit diesen Daten anzufangen hat, ein böser Faker weiß aber nicht, was er an diesem Aufruf manipulieren muss, um einen höheren Score zu erreichen...

Ein weiterer Vorteil ist, wenn jemand versucht daran herumzuspielen zerstört er die Integrität der verschlüsselten Daten und man erkennt dies sofort.
Als Gegenmaßnahme kann man die IP für eine gewisse Zeit auf eine Blackliste setzen und den Versuch protokollieren, mit etwas Data Mining kann man dann eventuell herausfinden, wann er die Verschlüsselung geknackt hat und dem Client erzählen, dass die Daten falsch seien :LOL:
 
Also der Referer kann gefälscht werden oder gar unterdrückt.

Gefälsch ist natürlich wieder so ein Punkt, den ich nicht verhindern kann. :-?
Und wer unterdrückt bekommt einfach nen Fehler... ;)

Aber eins noch, das ich vergessen hatte: Die Flashprogramme können NICHT geändert werden. Also die Spiele sind fest und auch die Übertragung.
Ich kann also nur versuchen diesen Prozess vom Start bis zu der Punkteübergabe soweit wie möglich abzusichern. :roll:
 
dann kanst du es gleich vergessen ;)
Deinen „Schutz” hat dann jeder in unter 5 Minuten geknackt.

Den Referer kannst du auch nicht nutzen, da Firewalls diesen gerne entfernen.
 
dann kanst du es gleich vergessen ;)
Deinen „Schutz” hat dann jeder in unter 5 Minuten geknackt.

Den Referer kannst du auch nicht nutzen, da Firewalls diesen gerne entfernen.

Ich weiß^^...nur leider sind 90% der verfügbaren Flashgames, die in den Arcade-Addons arbeiten, nur auf dieser Basis. ;)
Daher kann ich nur versuchen das ganze so schwierig wie möglich zu machen bevor ich es komplett offen lasse.:p