Avatar billede razmuz_dk Nybegynder
03. april 2005 - 14:48 Der er 5 kommentarer og
1 løsning

Problem med direkte linking

Hejsa,

Jeg har lavet et online fodboldmanagerspil. I spillet har nogle "listige" brugere fundet ud af, at hvis de sender præcist det rigtige link til en bestemt bruger som klikker på linket, så skader de deres eget hold (ved fx at smide en af deres egne spillere på "fri transfer") - sådan at snydere kan tage spilleren fra ham.

Da jeg hørte om "smuthullet" satte jeg straks et HTTP_REFERER-tjek op, som tjekkede om "klikket" kom fra min egen side eller fra et link "udefra". Dette virkede umiddelbart fint. Men jeg fandt ud af, at folk med firewall, internet security og lign. nu ikke længere kunne bruge de funktioner hvor disse restriktioner var gældende.

Hvad er alternativer til HTTP_REFERER i dette tilfælde? Jeg har overvejet brug af <form method="post"> - men dette ville i mit tilfælde være en "træls" løsning. En anden mulighed er at anvende noget md5-hash i linkene (tror jeg nok :)). Håber i har nogle gode idéer! :)

mvh. Rasmus
Avatar billede dennismp Nybegynder
03. april 2005 - 14:53 #1
POST ville ikke løse det.

Du kunne lave en tilfældig kode der gemmes i session når brugeren logger ind. Når man så skal lave noget vigtigt, så overfører du den kode i linket, og i det scripts du linker til lave du:

if( $_SESSION['code'] == $_GET['code'] ) {
  // alt er ok
}
else {
  // Uhada, noget er galt her.
}

Det burde ikke være så svært at lave.
Avatar billede Slettet bruger
03. april 2005 - 15:20 #2
Du har vel et login system. så er det vel bare at teste det før dit script:

$query = mysql_query("SELECT * FROM spillere WHERE spillerid=". $_GET['spillerid'] ." AND brugerid=". $_SESSION['brugerid']);
if(mysql_num_rows($query) == '1'){
}
Avatar billede razmuz_dk Nybegynder
03. april 2005 - 16:31 #3
dennismp -> Fed idé.. den tager jeg

Wicez -> Din idé er knap så fed.. fordi brugeren kan jo godt være logget ind når de følger linket (uden de ved hvor linket peger hen på - fx noget "farligt"). Desuden er din sql-sætning meget usund ;) - SELECT COUNT(spiller_id) AS.. ville være bedre. Men tak for indlægget anyways..

Svar venligst dennismp
Avatar billede Slettet bruger
03. april 2005 - 16:53 #4
Ahh jeg misforstod det hele.. :o(
troede at det var andre udefra, der kunne skrive en URL så en anden spillers spillere blev slettet e.l.
Avatar billede dennismp Nybegynder
03. april 2005 - 16:57 #5
Et svar.

wicez, man kan ikke vinde hver gang :)
Avatar billede Slettet bruger
03. april 2005 - 17:16 #6
Man kan prøve :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester