Autor Zpráva
juneau
Profil
Zdravím, v mé fotogalerii budou moc návštěvníci hlasovat pro jednotlivé fotografie, pak se to nějak vyhodnotí atd. Hlasování bude omezeno na 1 IP a den, takže jeden člověk bude moci hlasovat 31x za měsíc. Problém s vnitřními sítěmi za jednou IP neřeším.

Princip hlasování bude ten, že na stránce fotka.php bude tlačítko na hlasování, které přes JS vyvolá AJAX požadavek na uložení hlasu (skript hlasovani.php?id-fotografie=XY). Tam dojde k uložení hlasu (nehlasovalo-li se).

A teď mi jde o to, aby nějaký vykuk nevykoukal ze zdrojáku, že hlasování pro "jeho" fotku probíhá na "hlasovani.php?id-fotky=125" (třeba), a na hypernavštěvovaný web svého kamaráda si nenechal umístit třeba toto:

<img src="http.../hlasovani.php?id-fotky=125" width="1" height="1" />

Předpokládám, že takto by dané fotografii naskakovaly tisíce hlasů od lidí, kteří vůbec nic netuší. A ptám se: Může to takto fungovat? Lze takto hlasování v mém případě ovlivnit?

A především: jak se proti tomu lze bránit?
Str4wberry
Profil
Viz Cross-Site Request Forgery
Ugo
Profil
fungovat by to mělo, moh bys to částečně asi ovlivnit tím že budeš posílat post data, podíváš se po hlavičce referera, použiješ nějaké cookies (csfr)
blast3r
Profil
No ku kazdemu nastevnikovi prirad urcite nahodne generovane ID, a to napr. uloz do cookies, a pri kazdom hlasovani kontroluj toto ID.
juneau
Profil
Str4wberry:
No jistě, jsem idiot ... to jsem také zkoumal, ale nedošlo mi, jak to využít v okamžiku, kdy hlasování probíhá přes "onclick" na odkazu. Až nyní. Pořád jsem si říkal, že mi to bude k ničemu, když token uložím do SESSION ... což je právě blbost :)

Tedy následující princip, že ano?

// uložení tokenu do DB
//...

<a href="#" onclick="hlas(ID_FOTKY, TOKEN12345ABCDE );">Hlasujte ...</a>

A v hlasovacím skriptu samozřejmě běžná kontrola tokenu. Děkuji za popostrčení.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0