Autor Zpráva
magister
Profil *
Čaute,

jak byste řešili přihlášení na nějaké stránce, kde je formulář posílaný samozřejmě postem, ale v kterém je také hidden input pole name="hash", které obsahuje náhodně vygenerovaný řetězec, jehož hodnota je do stránky dodávána ajaxem a je při každém requestu unikátní? Jde to vůbec nějak?

Když tam přes curl pošlu postem přihl. údaje, tak neznám ten hash řetězec, který je potřeba postnout (jinak se přihlášení neprovede). Když si nejdřív provedu jeden požadavek vracející html stránky, vyparsuju si hash, který postnu s přihl. údaji v dalším požadavku, tak už je předchozí hash neplatný, protože se vygeneroval nový.

Přijde mi to jako bezvýchodná situace, ale možná existuje řešení?
magister
Profil *
Teď jsem zjistil, že když vypnu v prohlížeči javascript, tak se na tu stránku dá přihlásit. Takže tam bude ochrana ještě na jiný úrovni - a to zřejmě ta, že se každému návštěvníkovi vygeneruje nějaký tento hash, uloží se do _SESSION a vloží do formuláře do toho hidden pole. Po odeslání pak musí hash z formuláře souhlasit s tím ze SESSION. Myslím si to, protože když vymažu před odesláním formuláře v prohlížeči cookies a tím pádem přeruším vazbu se SESSION, tak mi odeslání formuláře nezafunguje.. takže to bude asi ono.

Otázka tedy zní - když provedu curl požadavek, dají se z něj nějak vyčíst cookie, které mi server zaslal a že bych je (resp. v tomto případě jen jednu, a to PHPSESSID) předal v dalším požadavku, čímž by se hashe rovnaly a formulář by prošel?

zkoušel jsem curl_setopt($ch, CURLOPT_HEADER, 1) a curl_getinfo($ch), ale nikde tam nic takového nepíšou :(
magister
Profil *
Tak cookie PHPSESSID získána, teď jen jak jí poslat v dalším requestu. Pohledám a uvidím, kdyžtak postnu pro další generace. Ale jestli někdo ví, tak klidně nahoďte ;)
magister
Profil *
Tak pomohl tento thread http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=102210, tento problém je tedy vyřešen. Díky za pozornost a těším se na další spolupráci ;)

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: