View Single Post
Sitat av Sk!ppy Vis innlegg
du bør kontrollere hva som blir postet i databasen. "Du har nå kjøpt Bangshot! ", og jeg tryllestave min kostet null, og heter kuk.
Vis hele sitatet...
Ditto. Man kan også skrive hva man vil som "hus" når man registrerer seg. Er ganske alene i Freakforum-huset... Burde ha en enkel integer som representerer dette.

Edit: SQL-feilmelding når jeg bruker enkeltfnutt ' i "ugleposten". Dette kan bli stygt.

Man kan også ta ut negative beløp fra 'banken', det er nesten ingen sjekking av variable eller escaping noen plass. Jeg er kanskje litt streng på akkurat dette, men siden jeg ikke har noen interesse av selve spillet så bidrar jeg i alle fall med mitt synspunkt på det som betyr noe for meg - sikkerhet. Det er veldig mye som må gjøres om på denne siden, men som konsept så er vel dette greit nok.

Designet er så-som-så, det er lite å gjøre foreløpig, og sikkerhetshullene så store at det kun vil ta timer før en eller annen bruker kjeder seg og bestemmer seg for å slette hele databasen din. Sanitering av input fra brukeren er det første du bør ta å gjøre om, sporenstreks. Du kan ikke forvente at brukeren sender gyldige data til deg. Du må legge det opp slik at det ikke er tvil om hva brukerens *intensjon* er, og så gjøre ditt server-side i etterkant.

Eksempel: En bruker vil kjøpe en tryllestav. Han får velge tryllestaver fra en liste. Du har laget denne listen, hvorfor ikke ha en kopi av den på server-siden? Da kan brukeren sende et tall 1-9 f.eks. og du kan finne fram en gyldig tryllestav i tabellen din og sette inn i databasen. (Eventuelt kan du sjekke at tekststrengen som sendes inn faktisk finnes i den lokale listen, men dette gir dårligere ytelse og er faktisk vanskeligere å få til skikkelig.) Nå trenger du bare å sjekke om det faktisk er et tall mellom 1 og 9 for å vite om dette er lovlig input, og du kan hente frem prisen lokalt også - fremfor å tro at brukeren prøver å sende deg den riktige prisen (det er veldig, veldig lett å endre POST-data).
Sist endret av Dyret; 24. juli 2010 kl. 17:07.