Jump to content
php.lv forumi

Pārliecināties pret viltošanu


mickys

Recommended Posts

Izveidota "Spēle 15". http://bez-maksas.lv/spele15

Domāju par Topa veidošanu, bet tagad radies jautājums, kā nodrošināties pret ļaunprātīgu lietotāja rīcību.

Jeb kā izveidot sistēmu, kas pārbauda vai tiešām ir izpildīta mīkla?

 

Kaut kādu identifikatoru sūtīt vai ko darīt? Lietotāji tiks identificēti ar Draugiem.lv pasi

Link to comment
Share on other sites

Piefiksē datus tikai tad, kad ir iziets, un ja to dara caur dr.lv pasi, tad tur es nespēju iedomāties, kur tu saskati iespēju šmaukties.

Starp citu, forša spēlīte, nespēju atminēties, kad es viņu pēdējo reizi spēlēju, un ar pirmo piegājienu, protams, kad sapratu, ka skaitās laiks, izgāju 2:31min, toties paņemot otru piegājienu tas man prasīja 22sec, tā kā tur vajadzētu piestrādāt, lai pārkārto vienādi vai vismaz daudz sarežģītāk. :)

Link to comment
Share on other sites

KarlisBa: Nezini kā šmaukties?

Piemēram javaskriptā prosta URL'barā ierakstī laika uzstādīšanu uz patvaļīgu skaitli pie spēles iziešanas.

Vai arī masīvā ierakstī skaitļus korektā veidā, un spēle pati fiksēs uzvaru.

Link to comment
Share on other sites

Hmm, viens risinājums ienāca prātā.

 

Php uzģenerē laukumu, pieglabā laiku, un kontrolsummu no laika.

 

teiksim $token = sha256($serializēts_laukums . $generācijas_laiks . $sāls);

 

Nodod šos datus JS'am, pēc uzdevuma veikšanas JS nodod atpakaļ serverim tokenu, sākotnējo laukumu, risinājuma gaitu (soļus), aizņemto laiku.

 

Serveris pārbauda, vai laukums ir autentisks, vai risinājuma soļi noved pie pareizas atbildes. Salīdzina laiku starp risinājuma iedošanu lietotājam, atbildes saņemšanu un JS risinājuma laiku. Protams, kaut kāda kļūda būs pateicoties interneta latencei, bet tomēr.

 

Kā šāds variants?

Link to comment
Share on other sites

http://bez-maksas.lv/spele15/?limenis=100

Tiem, kam gribējās grūtāku.. :)

 

Nu, salīdzināšana jau notiek javascriptā, vienkārši biju domājis, ka pabeidzot spēli, kā tagad tiek uzmests alert();, tā pat tiktu izsaukts pieprasījums uz kādu URL, kas pieraksta, kāds lietotājs un viss pārējais.

Bet tad rodas problēma, ka varētu sūtīt datus uz to URL vienkārši caur address bar, nevis pabeidzot spēli.

Link to comment
Share on other sites

Vienīgais pareizais risinājums ir laiku skaitīt servera pusē.

 

Atveram firebug, ierakstam JS konsolē count=false;, saliekam puzli, atstājot vienu gājienu JS konsolē ierakstam count=true un saliekam līdz galam.

Link to comment
Share on other sites

Vienīgais pareizais risinājums ir laiku skaitīt servera pusē.

 

Atveram firebug, ierakstam JS konsolē count=false;, saliekam puzli, atstājot vienu gājienu JS konsolē ierakstam count=true un saliekam līdz galam.

 

Mhm, tāpēc es arī savā variantā piedāvāju čekot laiku servera pusē, kad laukums ir ģenerēts un kad ir saņemta atbilde, un vēl salīdzināt ar JS padoto lauku. Ja atšķirība starp šiem laikiem maza, ņemam JS padoto laiku, ja liela, tad vai nu lēns internets vai arī kāds šmaucas :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...