Mám na mysli takové řešení, že uživatel zadá na přihlašovací stránce jméno+heslo. Server je zkontroluje, pokud sedí, tak vygeneruje náhodný řetězec, tento řetězec si sám uloží do tabulky přihlášených uživatelů, k němu uloží čas, aby to nešlo používat libovolně dlouho, a tento řetězec dává do každého URL, které vrátí danému uživateli jako odkaz.
Při přijímání požadavků zase řetězec porovnává a pokud nesedí nebo vypršel čas, tak akci neprovede.
Pokud útočník nezná uživatelovo jméno/heslo a pokud nešmíruje komunikaci mezi serverem a uživatelem (ta se dá navíc zašifrovat v https), tak se k tomu náhodnému parametru v URL nijak nedostane. Pokud ten řetězec v URL někdo vytáhne z historie browseru nebo ze starých proxy logů, tak je mu na nic, protože vypršel jeho čas.
S tímhle parametrem v URL funguje např. xchat nebo mail.centrum.cz a nevidím v tom problém.
Názor k článku
Co je Cross-Site Request Forgery a jak se mu bránit
uživatel si přál zůstat v anonymitě
---.strcechy.adsl-llu.static.bluetone.cz
24. 11. 2008 19:10
Re: Tajná hodnota ve formuláři nefunguje
celé vlákno
Tiskni