Tag Archives: nonce

admin-ajax.php problemi

Na jednom od WordPress sajtova koje održavamo mreža botova je počela da zloupotrebljava fajl admin-ajax.php koji se inače koristi da front deo sajta (JavaScript) komunicira sa bekendom. Da bismo ih sprečili u tome prvo smo utilizovali WordPress-ov nonce. Onda se ispostavilo da taj nonce i nije nonce u pravom smislu: ima validnost 12-24 sata u okviru kojih može da se upotrebi više puta. Stoga smo utilizovali WordPress Transients, nešto kao keš, kako bismo mogli da beležimo koji nonce je iskorišćen, odnosno da ga invalidiramo nakon prve upotrebe. Međutim, opet, nešto tu nije štimalo zato što se dešava da isti korisnik koji otvori istu stranu može da dobije isti nonce za koji bekend posle kaže da više nije validan zato što je iskorišćen u prethodnoij akciji. Na kraju smo ostavili nonce po strani i instalirali Guglov reCAPTCA v3 koji sve radi u pozadini: korisnik dođe na front deo sajta, Gugl pokupi neke informacije o ponašalju korisnika (kako koristi miša, tastaturu itd.) i vrati sajtu određen token. Onda korisnički zahtev sa fronta dođe do bekenda sa sve tokenom pa bekend pošalje taj token Guglu na proveru. Gugl na skali od 0 do 1 da pretpostavku da li je korisnik čovek ili nije i onda bekend na osnovu tog skora odluči da li da obradi korisnički zahtev ili ne. Ako maliciozni korisnik pošalje zahtev direktno na admin-ajax.php, ne zna koja je vrednost tokena i automatski biva kvalifikovan kao bot.