Automatické CSRF u „nebezpečných odkazů“

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jiří Nápravník
Člen | 710
+
0
-

Jak řešíte CSRF u „rizikových odkazů“. Psát u každýho mazání apod. vlastní formulář je jistě otrava, pak mě napadlo jeden formulář a měnit mu jen akci kam bude směrovat, kam bude směrovat. Ale to mi taky nepřijde úplně ideální. Je v Nette nějaké šikovné řešení, příp. kudy se ubírat? Vlastní makro?

David Matějka
Moderator | 6445
+
0
-

jo, makro, ktere prida k parametrum nejakej csfr token bude nejlepsi, jeste me napadlo prepsat v base presenteru metodu link ve stylu:

public function link($destination, $args = array())
{
	if(isset($args['csrf')) and $args['csrf']==true) {
		$token = vygeneruj_a_uloz_do_session_token();
		$args['csrf'] = $token;
	}
	return parent::link($destination, $args);
}

v sablone by stacilo jen

<a n:href='Foo:bar id=>$id, csrf=>true'></a>

lepsi ale bude si napsat makro, ktere bude delat v podstate to same

overeni potom bud jednoduse

public function actionDefault($csrf)
{
	$this->verifyCsrf($csrf);
}

nebo treba si tu metodu oznacit anotaci jako @protected, prepsat metodu checkRequirements a tam overit token

Aurielle
Člen | 1281
+
0
-

Na starší verze Nette se tady na fóru vyskytoval dle mého názoru celkem pěkný kód, který toto řešil automaticky přetěžováním link a handle metod.

Jiří Nápravník
Člen | 710
+
0
-

Díky za tipy všem

Jan Tvrdík: ten pull request jsem našel, ale přeci jen byl načatý před rokem a nějak se k jeho implementaci do Nette zatím nemělo, tak jsem to spíše ignoroval, ale ten druhý odkaz už je zajímavý. Díky

hrach
Člen | 1838
+
0
-

Jejda. Pouzij mou extension :) https://github.com/…/application

Jiří Nápravník
Člen | 710
+
0
-

Pouziju, ostatne Jan Tvrdik mi na ni poslal link (tu starší teda). Tu s traits nepouziju, nemam php 5.4 na serveru