Toon posts:

[mobile app game] prog. taal & auth

Pagina: 1
Acties:

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 05-06 06:37

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Ik zit al een tijdje met een vraag hoe ik nu iets het beste kan gaan doen. Zoals vele misschien weten zit ik met mijn achtergrond vooral in het PHP wereldje, echter hou ik ervan om in mijn eigen tijd te knutselen aan andere zaken, zoals mobile apps. Nu is de basis van zo'n app vrij simpel, echter wil ik nu een stap verder. Vrijwel alles wat ik heb gemaakt is nogal statisch.

Mijn bedoeling is om een game te maken, en dan ligt de nadruk vooral op de gameplay. Hiermee bedoel ik dat het allemaal vrij simpel is qua graphics, niets wat bijvoorbeeld JS/jquery/html niet zou kunnen. Het probleem wat ik vaak heb, is dat ik alles goed wil doen, daarom loop ik waarschijnlijk ook deels vast, maar ik wil er toch mee doorgaan.

Even een uitleg:

De bedoeling is dat iemand sowieso een account heeft. Niet alleen is dit dan een unieke identifier, zo kan ik ook allerlei spul opslaan onder iemand zijn account (bijvoorbeeld het character). Uiteindelijk kan een speler bepaalde acties doen, echter wil ik dit wel vanaf een "server" gaan genereren. Het komt er dus op neer dat de client alleen maar calls doet, en data terug krijgt.

speler -> hit
server -> hit voor 52
speler -> hit
server -> hit voor 45

Nu heb ik een opzet gemaakt met PHP/Jquery, en met json post ik de data eigenlijk naar een "server" oftewel een php pagina die alles bewerkt en doet. Deze returned weer allerlei zaken.

De rede dat ik dit zo wil, is dat je dus niets uit de client kan genereren. Dit om bijvoorbeeld cheaters tegen te gaan. Nu is mijn probleem, hoe zorg je ervoor dat je een fatsoenlijke authorisatie hebt, dat je weet dat speler x, ook echt speler x is. Dit dus om ervoor te zorgen dat je gegevens onthoudt en naar de juiste terug stuurt.

Het is dus niet van belang dat er om de x-seconde iets gechecked gaat worden, het is geen mmorpg waarbij je elke keer data van andere users moet gaan ontvangen. Het is puur afhandeling om data veilig te houden en dat clients niet allerlei updates moeten hebben, maar dat ik de server kan updaten met tweaks.

Mijn volgende punt is eigenlijk, wat is nu een fatsoenlijke taal om hiermee te sleutelen? Ik heb dus zelf al het één en ander als test gemaakt, maar ik merk nu al dat het vrij rommelig gaat worden om alle calls en requests netjes te ordenen en de juiste data terug te sturen/ontvangen. Dit dus puur met JS en PHP.
Zijn hier bepaalde frameworks of libs voor die ik met gemak kan gebruiken?

Ook wil ik dit graag cross-platform gaan uitrollen, en hiermee bedoel ik dus:
andriod
iOS
windows phone
en via je browser.

Uiteindelijk zou ik dit ook graag via bijvoorbeeld FB willen uitrollen. Voor mij als hobbyist is het dus wel belangrijk dat ik niet voor elk platform een nieuwe "client" moet gaan maken. Ik heb het liever simpeler, en misschien dan minder mooi dan dat ik 4 verschillende clients moet gaan uitbrengen.

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 20-05 22:28
Ik zou lekker met phonegap gaan werken. Front in javascript/jquery server php. En dan haken op je PHPSESSID met wat magic. (of devices locken via gcm of welke pushlib dan ook bijvoorbeeld)

Of als het een 2 player game is. Onmove p1->sendnotification(player2). Dan weet player 2 dat het zijn beurt is. (en GCMids zijn devicelocked) en kom je met een obsure gameID ook wel weg ;)

bijvoorbeeld. post vanuit javascript naar je server. newgame bijv. dan return je een leuke lang unieke string waarop je kan getten. (om de game status bij te houden). Bij een move stuur je een push bericht naar devices en/of chrome browsers. (bijv. via gcm.php, staat ergens op git). (En in de app even de first start afvangen voor registratie van de app en user bij google en een regid meesturen bij het starten / joinen van een game of de regids in een database bijhouden. en periodiek cronnen.).

[Voor 72% gewijzigd door Biersteker op 24-05-2014 22:02]

Originally, a hacker was someone who makes furniture with an axe.


  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 05-06 06:37

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Even korte update;

Ik ben nu bezig om eerst een fatsoenlijke koppeling te verkrijgen. Ik heb nog geen framework ingedachte voor de backend / "server" (PHP dus). Op dit moment heb ik iets waarbij de headers geset worden met Basic Authorization, combinatie dus van username+pass en dat pak ik dan weer op in de 'server'.

Nu heb ik er wel een beetje mee in gelezen, maar het ziet er niet zo veilig uit. Volgens mij zitten er wat nadelen aan, ten eerste heb je dan sowieso een https verbinding nodig. Naast dat stuur je ook nog eens bij elk request de auth mee..

Is dan de oplossing om bijvoorbeeld een custom header te doen, waarbij de username en pass los worden meegestuurd, encrypted dan wel met een private key? Vervolgens stuur ik dan het sessie id weer terug, en plaats deze in de localstorage van html5.
Of is bovenstaande oplossing ook prima, als je basic auth gebruikt wat volgens mij base64 is.

Natuurlijk sta ik open voor nog meer oplossingen :+

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 20-05 22:28
https://github.com/ezyang...lob/master/csrf-magic.php ?
Of je geeft ze een non guessable gameID mee ;) (lang en random)

[Voor 33% gewijzigd door Biersteker op 24-05-2014 22:45]

Originally, a hacker was someone who makes furniture with an axe.


  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 05-06 06:37

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Nja het gaat mij niet eens om over de implementatie, maar hoe dat dan moet. Ik wil gewoon een sessie krijgen op basis van username+pass. Dat moet veilig zijn voor zowel mij, als de speler. Dus niet dat iemand zijn sessie kan overnemen, of zich kan voordoen als iemand anders. Los van dat moeten zijn credentials niet zomaar uit te lezen zijn.

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 20-05 22:28
Je hoeft hiervoor niet per se https te gebruiken. Je komt waarschijnlijk met session fixation ook een eind,

http://www.rtcx.net/preventing-session-hijacking-using-php/

Originally, a hacker was someone who makes furniture with an axe.


  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 05-06 06:37

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Goed punt.
Wat ik waarschijnlijk ga doen is het volgende:

-> login met Basic auth
<- return sessie id
-> call naar server inclusief sessie id in de header
<- checked id, maakt nieuwe sessie en destroy oude sessie, stuurt nieuw id terug
-> call naar server inclusief sessie id in de header
etc.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee