Vypnutí detekce CSRF útoku (cookie „_nss“)

obud
Člen | 15
+
0
-

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
+
-3
-

moc nechápu co je těžkého vygooglit „nette csrf“ https://doc.nette.org/…y-protection#…

Marek Bartoš
Nette Blogger | 1274
+
+1
-

@OndřejKubíček Tohle zabrání kontrole cookie, ne jejímu odeslání.

Marek Bartoš
Nette Blogger | 1274
+
+1
-

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

https://github.com/…xtension.php#…

Ondřej Kubíček
Člen | 494
+
0
-

Sorry, ale v dokumentaci je napsané „pokud chcete ochranu vypnout…“ tak jsem to tak pochopil

Marek Bartoš
Nette Blogger | 1274
+
0
-

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
+
0
-

@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
+
0
-

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
+
0
-

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

https://github.com/…xtension.php#…

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
+
0
-

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.