Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Javascript/PHP/Flash] Beveiligingsvraagstuk *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Waarschijnlijk heeft dit vraagstuk voor het grootste deel betrekking op clientside, vandaar dat ik het maar hier post.

Ik zit met het volgende, voor een website van me heb ik enkele flash spelletjes die na het spelen onversleuteld de behaalde score posten naar een php file. Vervolgens is het idee om deze scores met PHP in een database op te slaan om ergens anders weer te kunnen geven.

Het probleem is dat deze scores ook op een andere manier gepost kunnen worden naar de php file. Met andere woorden, cheaters kunnen gemakkelijk zelfbedachte scores posten.

Hoe zou ik dit het beste kunnen aanpakken? Flash lijkt geen referer mee te geven, en het verschilt waarschijnlijk ook nog per browser... bovendien zijn referers makkelijk te faken. Verder dacht ik aan cookies aanmaken op de pagina waar de speler het spel speelt, en op de php pagina te controleren of die cookies bestaan en ze verwijderen bij succes. Ook die cookies zijn echter te faken, of je houdt gewoon een venster open met de spelpagina zodat je niets hoeft te faken.

Mijn beste idee tot nu toe is een combinatie van hierboven genoemde elementen, maar echt waterdicht is het niet.

NB: de flashbestanden kunnen niet gewijzigd worden, dat de data onversleuteld wordt gepost is een onveranderbare zaak. Helemaal waterdicht zal het dus niet kunnen worden, maar een paar creatieve geesten moeten wel een eind kunnen komen. :)

  • WeeJeWel
  • Registratie: April 2007
  • Laatst online: 20-11 11:53
Als je nou eens..

de score onversleuteld verzend
én
de score inclusief een heel lang password in een string versleuteld via md5, en die ook meezend.

PHP plakt dan het wachtwoord aan de score, md5sum't en als het klopt, is de data geldig, anders niet.

Homey — Critics are those without skills to create.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Lijkt me dus onmogelijk:
Verwijderd schreef op dinsdag 08 januari 2008 @ 17:33:
NB: de flashbestanden kunnen niet gewijzigd worden, dat de data onversleuteld wordt gepost is een onveranderbare zaak.
Tenzij: verstuurt de flash rechtstreeks de scores? Of gaat dit via een javascriptfunctie waar je wél bij kunt?

[ Voor 66% gewijzigd door RobIII op 08-01-2008 17:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
WeeJeWel schreef op dinsdag 08 januari 2008 @ 17:35:
Als je nou eens..

de score onversleuteld verzend
én
de score inclusief een heel lang password in een string versleuteld via md5, en die ook meezend.

PHP plakt dan het wachtwoord aan de score, md5sum't en als het klopt, is de data geldig, anders niet.
De score versleuteld versturen zou toch alleen mogelijk zijn door wijzigingen in het flashbestand aan te passen?
RobIII schreef op dinsdag 08 januari 2008 @ 17:40:
Verstuurt de flash rechtstreeks de scores? Of gaat dit via een javascriptfunctie waar je wél bij kunt?
Flash verstuurt rechtstreeks de scores naar een php bestand, wat ik met die post data ga doen is daarna aan mij.

[ Voor 25% gewijzigd door Verwijderd op 08-01-2008 17:43 ]


  • WeeJeWel
  • Registratie: April 2007
  • Laatst online: 20-11 11:53
Eh, tja, dan kun je niet veel hè... behalve de source vragen of decompilen (wat zonde zou zijn ;))

Homey — Critics are those without skills to create.


Verwijderd

WeeJeWel schreef op dinsdag 08 januari 2008 @ 17:35:
Als je nou eens..

de score onversleuteld verzend
én
de score inclusief een heel lang password in een string versleuteld via md5, en die ook meezend.

PHP plakt dan het wachtwoord aan de score, md5sum't en als het klopt, is de data geldig, anders niet.
Daarnaast zul je de swf ook nog eens moeten "obfuscaten" anders is deze gemakkelijk te decompilen waardoor je het wachtwoord kan achterhalen.

  • MuisM4t
  • Registratie: Mei 2007
  • Niet online
En dat flash ding verzend geen andere data mee, behalve de score?

Anders zou je die gegevens kunnen controleren tijdens de verwerking van de score.

[ Voor 39% gewijzigd door MuisM4t op 08-01-2008 19:44 ]


Verwijderd

Topicstarter
Alleen een string die aangeeft om welk spel het gaat, maar die zal een cheater evengoed meeposten.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

dus... Je kan niets wijzigen aan de feitellijke structuur van de SWFs, het gaat in plaintext over de lijn en je wilt het beveiligen m.b.v. een referer of een cookie?

Sorry, maar mij zou het geen 2 seconde extra tegenhouden als ik dat zou willen faken :X Zonder speciale challenge/response aanpassingen aan de code of encryptie gaat dat 'm gewoon niet worden volgens mij, sorry :P

Als dit je enige opties zijn zou ik er geen moeite in steken :)

[ Voor 12% gewijzigd door SchizoDuckie op 08-01-2008 23:23 ]

Stop uploading passwords to Github!


  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 20-11 12:53
Als je een functie in Flash zou maken die een wachtwoord of iets dergelijks meestuurt, of de score codeert, kan je het nog steeds faken door de functie te kopieeren (nadat je de .swf gedecompilled hebt) en de functie aanroepen met een fake score, om daar een nieuwe hash uit te halen.

Verwijderd

Topicstarter
SchizoDuckie schreef op dinsdag 08 januari 2008 @ 23:14:
dus... Je kan niets wijzigen aan de feitellijke structuur van de SWFs, het gaat in plaintext over de lijn en je wilt het beveiligen m.b.v. een referer of een cookie?

Sorry, maar mij zou het geen 2 seconde extra tegenhouden als ik dat zou willen faken :X Zonder speciale challenge/response aanpassingen aan de code of encryptie gaat dat 'm gewoon niet worden volgens mij, sorry :P

Als dit je enige opties zijn zou ik er geen moeite in steken :)
Referers, cookies, sessions was wat ik tot nu toe had gevonden. Dit topic ivm de zoektocht naar meer opties...

  • apokalypse
  • Registratie: Augustus 2004
  • Laatst online: 00:50
WeeJeWel schreef op dinsdag 08 januari 2008 @ 17:35:
Als je nou eens..

de score onversleuteld verzend
én
de score inclusief een heel lang password in een string versleuteld via md5, en die ook meezend.

PHP plakt dan het wachtwoord aan de score, md5sum't en als het klopt, is de data geldig, anders niet.
Mirror attack ;)

Verwijderd

Dat wil zeggen ?

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Wat wel kan helpen is tussentijds de resultaten opslaan. Dan heb je veel meer mogelijkheden om rare progressies op te sporen tussen de levels door, want je weet wel hoe lang het ongeveer duurt, wat het maximaal behaalbare aantal punten is, etcetera. Dan moet een cheater echt een speler gaan emuleren die goed speelt, iets wat misschien wel lastiger is dan.......goed spelen :+

iOS developer


  • H004
  • Registratie: Maart 2006
  • Laatst online: 28-05 19:55
Maar ook daarvoor moet de flashfile aangepast worden, want deze verstuurt de score pas als het spel afgelopen is.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik neem aan dat je 'replay' bedoelt. ;) En dat zou niet eens zo erg zijn, want in dat geval is die hoge score tenminste wel 1x legitiem behaald. Als je dan de 1e met een bepaalde score bovenaan zet, is er niet eens zoveel aan de hand. :)

Maar goed, zonder aanpassingen schiet het niet op.

{signature}


Verwijderd

Topicstarter
Ik zou eventueel op de spelpagina na een bepaalde tijd spelen een ajax request kunnen uitvoeren die via php de session/cookie/user_agent etc. van de speler aan het spel koppelt in een database. Het posten van de score heeft dan alleen zin als het spel ook daadwerkelijk een bepaalde tijd gespeeld is.

In dit geval werkt het faken van een session/cookie niet als ze het te snel doen. Zou ontmoedigend kunnen werken.

Laat ik de vraag dan zo stellen, aangezien enige technische vorm van echt beveiligen niet mogelijk is: iemand nog meer ontmoedigende barrieres te verzinnen?

  • apokalypse
  • Registratie: Augustus 2004
  • Laatst online: 00:50
Voutloos schreef op woensdag 09 januari 2008 @ 10:02:
[...]
Ik neem aan dat je 'replay' bedoelt. ;) En dat zou niet eens zo erg zijn, want in dat geval is die hoge score tenminste wel 1x legitiem behaald. Als je dan de 1e met een bepaalde score bovenaan zet, is er niet eens zoveel aan de hand. :)

Maar goed, zonder aanpassingen schiet het niet op.
Nee, in het nederlands spiegelaanval. Is toch iets anders dan simpele replay.

Verwijderd

apokalypse schreef op donderdag 10 januari 2008 @ 00:44:
[...]

Nee, in het nederlands spiegelaanval. Is toch iets anders dan simpele replay.
Wat is het dan ?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op woensdag 09 januari 2008 @ 12:28:
Laat ik de vraag dan zo stellen, aangezien enige technische vorm van echt beveiligen niet mogelijk is: iemand nog meer ontmoedigende barrieres te verzinnen?
Passief is er wel het een en ander te verzinnen. Als binnen een te korte periode een aantal grote scores door hetzelfde ip neergezet worden, kan je dat wellicht als verdacht beschouwen en even nader onderzoeken. En zo zijn er vast nog wat verdachte combi's van usernames, scores, timestamps en ip adressen te verzinnen.
apokalypse schreef op donderdag 10 januari 2008 @ 00:44:
Nee, in het nederlands spiegelaanval. Is toch iets anders dan simpele replay.
Misschien moet je het eea toelichten als blijkt dat niemand je begrijpt. ;) Ik denk nu je doelt op een aanval waarbij de server verklapt welke controle hash bij een bepaalde input hoort, maar ik zie geen reden waarom server de manier van checken zou terugkoppelen, dus als een dergelijke aanval mogelijk zou zijn zou het een hele grote fuckup zijn.

{signature}

Pagina: 1