login  Naam:   Wachtwoord: 
Registreer je!
 Forum

veiligheid in een spel

Offline Teruri - 17/12/2008 14:33
Avatar van TeruriNieuw lid Hallo sitemasters.
Ik werk aan een spel (gewoon zo'n text based rpg, je kent ze wel), maar omdat dit mijn eerste grote php project is, heb ik wat vragen over de veiligheid.

Ten eerste:
Alle user input haal ik door een functie makesafe(). Hierin staat zowel mysql_real_escape_string als een addslashes. Is dit voldoende om sql injection tegen te gaan?

Ten tweede :
Kan de inhoud van een dropdown menu veranderd worden? Moet ik hier nog een check doen of de inhoud klopt met wat toegestaan is? Dus gewoon een array met alle toegestane inhoud en dan in_array eroverheen halen?

Ten derde:
Mijn inlog systeem werkt zo dat als je inlogt een session wordt gemaakt met daarin je account naam. Als die session bestaat wordt de informatie uit de database gehaald aan de hand van de naam uit die session. Is dit veilig? Met andere woorden kan iemand een session aanmaken en daar gewoon een naam inzetten en zo het inlog systeem vermijden?

Ik heb heel weinig verstand van hacken, en wil wel dat het spel zo veilig mogelijk wordt.

10 antwoorden

Gesponsorde links
Offline Wim - 17/12/2008 14:39
Avatar van Wim Crew algemeen 1. mysql_real_escape_string alleen is voldoende
2. ELK formulier kan gemanipuleerd worden, ook hidden fields! Best dus controleren!
3. Sessions zijn server side, als ze deze kunnen manipuleren zouden ze in princiepe veel meer & interessante dingen kunnen doen op je server. Koekjes zijn echter wél client side! (maar deze gebruik je zo te horen niet)
Offline Teruri - 17/12/2008 14:44
Avatar van Teruri Nieuw lid Bedankt voor het antwoord.

Dus bij punt 3 vervang is dus het beste de sessions door coockies? Is het dan al een stuk veiliger? Of moet ik nog een extra check doen?
Offline Martijn - 17/12/2008 14:46 (laatste wijziging 17/12/2008 14:46)
Avatar van Martijn Crew PHP Ik heb ook zo;n soort spel, en wat ik extra heb is dat als iemand inlogd, ik een random tekst aanmaak van 6 tekens. Die 6 tekens sla ik op in de database, en in een sessie. Als die uit de database en sessie niet overeen komen, is er iets verkeerd aan de hand 

edit: Juist niet cookies ;) clientside betekend op de pc van de user, dus de user kan het aanpassen!
Offline Teruri - 17/12/2008 14:53
Avatar van Teruri Nieuw lid Uit het antwoord van wimmarien begreep ik juist dat ik cookies moest gebruiken.

Wat is nou het veiligst?
Offline marten - 17/12/2008 15:02
Avatar van marten Beheerder
Citaat:
Uit het antwoord van wimmarien begreep ik juist dat ik cookies moest gebruiken.

Wat is nou het veiligst?


Het is geheel afhankelijk hoe je andere code is opgebouwd.
Offline Teruri - 17/12/2008 15:55
Avatar van Teruri Nieuw lid Nou eerst check ik over de session/cookie bestaat, vanuit dat punt haal ik alle user data uit de database. Als een cookie bestaat kan je hem dus aanpassen en inloggen als jantje? Bij een session kan je het dus niet aanpassen en niet inloggen als jantje?
Offline Martijn - 17/12/2008 15:56
Avatar van Martijn Crew PHP als jij in een cookie opslaat dat ik gebruiker met id 23 ben, en ik vind dat cookie en verander 23 naar 1, die waarschijnlijk de admin is, dan ben ik admin lijkt me niet relaxed
Offline Teruri - 17/12/2008 16:06
Avatar van Teruri Nieuw lid Oke, heb even de session tutorial gelezen, en heb het weer terug veranderd. Dat is dus gewoon het veiligst.

Nu ga ik het zo maken dat ik de drop down check uitvoer.
Offline Godlord - 17/12/2008 16:47 (laatste wijziging 17/12/2008 16:49)
Avatar van Godlord PHP gevorderde Sessies kan men enkel jatsen (lees: stelen) omdat de ID van de sessie ofwel opgeslagen wordt in een cookie ofwel wordt deze de hele tijd meegesleept in de link.

Let op: een sessie kan wel men aanpassen op de server. Dit kan een probleem zijn op shared servers maar is ook te verhelpen zoals een aparte folder te laten aanmaken door de host voor de sessies van jouw site en de host dat te laten aanpassen in php.ini, er zullen vast ook nog andere opties zijn.

Om te zorgen dat een sessie niet gestolen wordt kan je o.a. de ID-code en het IP-adres opslaan in de database. Zo krijg je dan IP gebonden sessies. Maar, dan moet je er wel voor zorgen dat die sessie gewoon vernietigd wordt zodra het gestolen is en de dief probeert er mee op het spel te komen of dat het gewoon wordt genegeerd en dat de gebruiker behandelt wordt als gast en dus moet inloggen.
Offline Wim - 17/12/2008 17:01
Avatar van Wim Crew algemeen
Teruri schreef:
Uit het antwoord van wimmarien begreep ik juist dat ik cookies moest gebruiken.


Nee hoor, ik raad je aan sessies te gebruiken, en vermeldde er bij dat je het zo te horen goed doet...

@Marten: da's volgens mij niet volledig waar... Als je dezelfde code gebruikt lijken sessies mij bijna altijd veiliger... Koekjes zijn veel makkelijker aan te passen dan sessies
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.409s