Autor Zpráva
TFSi
Profil
Zdravím,
začal jsem se tak nějak víc zajímat o bezpečnost mých webových aplikací a jejich odolností proti různým typům útoků.
Po prostudování všemožných článků (včetně zdejší historie) zabývajících se touto tématikou jsem zůstal u útoku CSRF. Po přečtení článku od Jakuba Vrány jsem dospěl k závěru, že žádná opravdu spolehlivá ochrana snad ani neexistuje :(
Proto se chci zeptat:
1) je nějaké opravdu funkční řešení této slabiny?
2) pomůže nastavovat pro cookies příznak HTTPOnly (viz: http://www.phpguru.cz/clanky/predavani-sid-pomoci-cookies), nebo jsem úplně mimo?

A ještě bych měl jeden nevýznamný dotaz trošku mimo téma:
kterou možnost použít při ochraně proti útokům uhodnout login-heslo hrubou silou:
a) dočasně zablokovat po n neúspěšných pokusech IP adresu "útočníka" (čím ale můžu zablokovat třeba celou firmu, školu nebo malé město, pokud navenek mají společnou IP adresu)
b) dočasně zablokovat po n neúspěšných pokusech pouze účet který se snaží nabourat (čímž bude moci vesele pokračovat v útocích na další uživatele)
c) nějak jinak?

Díky za odpovědi
T.
imploder
Profil
TFSi:
je nějaké opravdu funkční řešení této slabiny?
V tom Vránovém článku je taková obrana popsaná: autorizační token. Píše tam „Tuto techniku popisuje Chris Shiflett, ale jeho přístup znemožňuje používání aplikace ve více oknech najednou.“ - tohle omezení je nejspíš dané tím, že další kopie stránky načtená do druhého okna přepíše autorizační token té první (jak to Chris Shiflett udělal nevím, jen tipuju).

Tak to ale udělané být nutně nemusí: Autorizačních tokenů by šlo mít i víc současně - druhá stránka aktuální nepřepíše, jen se její token přidá k tomu prvnímu (přístup je pak platný kterýmkoliv z nich). Až při odhlášení nebo vypršení časového limitu (automatické odhlášení) by se všechny tokeny smazaly.
TFSi
Profil
V tom případě tomu asi nerozumím:(
Teoreticky: pokud já, jakožto útočník získám cookies oprávněného uživatele včetně tokenu z URL (viz Jakubův článek: $url = "http://$_SERVER[SERVER_NAME]/admin/detail.php?id=$id&token=$token";) tak co mi brání v tom, abych ho použil dřív než uživatel a vydával se za druhé okno prohlížeče?

Nedělám přihlašovaní do bankovního účtu ani do centrálního počítače CIA, takže chápu že ty moje výplody nemusí být zase až tak perfektně zabezpečené, ale když už jsem se do toho dal... :)
Nox
Profil
TFSi:
Nevíš ten token :-)

přečti si to pořádně
to url takto psané tam nikde nevidím a to co popisuješ je spíš session stealing...navíc dávat ten token do url taky není moc dobrý

CSRF je to že zařídíš, aby dotyčná osoba ve svém prohlížeči odeslala tvůj formulář...s tím že když je přihlášena, tak by ten formulář byl přijat jako autorizovaný, jelikož má v prohlížeči ty session

Jenže pokud do databáze (atp.) vložíš token (nějaký dlouhý náhodný řetězec), a zároveň ho dáš do formuláře...útočník nebude vědět jaký token tam dát, takže bude jeho požadavek zamítnut

Mj. na ty token je vhodný MEMORY storage engine
Mastodont
Profil
IMHO je ještě jedna ochrana, neprovádět jakékoli destrukční operace přes http.
Nox
Profil
Mastodont:
V tom případě spíš žádné :)
Nastavování práv v administraci, vkládání komentářů, ukládání do košíku, úplně cokoli...
Mastodont
Profil
Vkládání komentářů nebo ukládání do košíku je destrukční operace?
Nox
Profil
Snažil jsem se naznačit, že na tom právě snad nezáleží, ošetřený by to mělo být tak jako tak.... kvůli této díře pak řešit že třeba na foru jsou příspěvky pod uživatelovým jménem, které tam sám nevložil? Zaspamování fora z účtu někoho jiného....nebo že si člověk objednal něco co nechtěl...

Nevidím důvod proč tam úmyslně nechávat volný prostor zneužití
Alphard
Profil
neprovádět jakékoli destrukční operace přes http.
Nebo místo mazání jenom doplňovat příznak smazání. Když se neobjeví problém, může se delete provést automaticky za měsíc.

Horší mi připadá zabezpečení editace, tvořit verzovací systém je složité. Nabízí se unikátní token pro právě jeden formulář.

Tady se používá ke kontrole referrer, taky možnost.
TFSi
Profil
Nox:
Jo, chápu. Díky! Přes víkend budu trénovat tokání :)

Stejně mi tu ale ještě mám otázku: co ten příznak HTTPOnly u cookies? Je to k něčemu?

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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