Vypnutí detekce CSRF útoku (cookie „_nss“)
- obud
- Člen | 15
Je nějaká cesta, jak vypnout v celé aplikaci detekci CSRF útoku – aby Nette neodesílalo cookie „_nss“?
Nette aplikaci mám pouze jako API endpoint a vzhledem k tomu, že všechny requesty jdou z jiných „site“, je tato detekce v tomto případě k ničemu a zbytečně posílá „_nss“ cookie s každou odpovědí.
Díky.
- Ondřej Kubíček
- Člen | 494
moc nechápu co je těžkého vygooglit „nette csrf“ https://doc.nette.org/…y-protection#…
- Marek Bartoš
- Nette Blogger | 1274
Momentálně to možné není, přinejmenším ne bez zkopírování
HttpExtension a odmazání kódu na odeslání cookie.
Ideální by bylo poslat PR, který umožní cookie vypnout a nebo alespoň
vyčlenit odeslání do samostatné metody, aby šlo jednoduše přetížit
- Ondřej Kubíček
- Člen | 494
Sorry, ale v dokumentaci je napsané „pokud chcete ochranu vypnout…“ tak jsem to tak pochopil
- Marek Bartoš
- Nette Blogger | 1274
Cookie se musí odeslat v requestu před tím, než dojde na cross-origin akci. Ta ochrana je založená na tom, že same-site cookie prohlížeč při cross-origin requestu neodešle, na řešení zda ji odeslat nebo ne je v konkrétní akci či formuláři pozdě.
Editoval Mabar (20. 2. 2021 19:47)
- Marek Bartoš
- Nette Blogger | 1274
@obud Případně pokud ti jde o to, abys nemusel označovat crossOrigin (což v případě ne-odesílání cookie budeš muset i kdyby šel request ze stejné domény), tak stačí v presenteru přetížit metodu detectedCsrf()
Edit: Pokud tedy používáš UI\Presenter. U IPresenter to není třeba řešit
Editoval Mabar (20. 2. 2021 19:53)
- obud
- Člen | 15
Mabar napsal(a):
@obud Případně pokud ti jde o to, abys nemusel označovat crossOrigin (což v případě ne-odesílání cookie budeš muset i kdyby šel request ze stejné domény), tak stačí v presenteru přetížit metodu detectedCsrf()
Edit: Pokud tedy používáš UI\Presenter. U IPresenter to není třeba řešit
V presenteru žádné signály nemám, takže tohle jsem nepotřeboval řešit, ale díky za tip, o tomhle jsem nevěděl.
Odesílání cookie bych skutečně rád vypnul, protože u toho mého API je _nss cookie zbytečná/nevhodná.
- obud
- Člen | 15
Mabar napsal(a):
Momentálně to možné není, přinejmenším ne bez zkopírování HttpExtension a odmazání kódu na odeslání cookie.
Ideální by bylo poslat PR, který umožní cookie vypnout a nebo alespoň vyčlenit odeslání do samostatné metody, aby šlo jednoduše přetížit
Je otázkou, jak to „správně“ vyřešit… vrátit zpět do konfigurace
volbu sameSiteProtection
, kterou @DavidGrudl odebral,
tentokrát ale v režimu opt-out?
http:
sameSiteProtection: false
A řešit nějak návaznost na detekci ve formulářích a signálech? Aby
se nemusela přetěžovat detectedCsrf()
a vypínat detekce
u formulářů separátně?
- Marek Bartoš
- Nette Blogger | 1274
Co si vzpomínám, tak jsem problém s odesíláním toho co se odesílat
nemá též řešil
https://github.com/…ttp/pull/153
Tenhle PR řeší, aby se nic neodesílalo, jestliže si nějaká služba nevyžádá Response. Což je imho lepší, obecnější řešení problému, ale pořád není dokonalé. S tím je potřeba počkat na nette/http v4, ve kterém už je Response jen datová obálka a neodesílá nic ihned.