akce nebo signál + ochrana proti CSRF

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

Ahoj,

četl jsem tu pár diskusí ohledně použití akce (action<Akce>) a signálu (handle<Signal>), ale příliš moudrý z toho nejsem. Řeším teď ochranu proti CSRF. Našel jsem zde řešení v podobě Nextras/secured-links, ale to dle všeho funguje pouze u signálů.
Původně jsem všechno řešil přes action, ale kvůli tomuto musím použít signály. Problém je ale v tom, že signál lze použít pouze v daném presenteru. Když tedy budu chtít použít jeden handle z více presenterů, musím tu metodu hodit do nějakého BasePresenteru. V tom by nebyl problém, jen se to bude na většině stránek načítat zbytečně.

Chci se proto zeptat zkušenějších vývojářů, jak by to řešili. Pokud lze přidat ochranu proti CSRF i do action metod, nejspíše by to bylo nejlepší řešení.

Díky moc.

Edit: Jen pro ujasnění dodám, že se jedná o akce, kde se mění data v databázi (např. smazání dat). Přijde mi ale zbytečné kvůli všemu vytvářet formuláře, když stačí jeden odkaz.

Editoval Magnus (14. 9. 2014 21:03)

David Kudera
Člen | 455
+
0
-

No přímo k secured-links ti já odpovědět nemůžu, ale pro takovýhle signály bych řekl, že jsou ideální traity. Jen teda nevím, jakou verzi PHP máš, ale určitě bych je na to použil..

Magnus
Člen | 65
+
0
-

Děkuji za odpověď.
Traity využít mohu, verze PHP je podporuje. Jen s nimi nemám zkušenost, ale vím, jak fungují – díky za nápad.

Aurielle
Člen | 1281
+
+2
-

Jednoznačně signály a již tebou zmíněné secured-links, které mají podobu traity. Pokud potřebuješ stejný signál ve více presenterech, tak můžeš využít buď BasePresenter, nebo taky traitu.

Magnus
Člen | 65
+
0
-

Výborně, díky za odpověď. :)

hrach
Člen | 1838
+
+3
-

Dělat něco takového v action je z principu špatně. Pokud potřebuje funkcionalitu mezi presentery, patří to do komponenty. Tam nextras secured links fungují.

Magnus
Člen | 65
+
0
-

Děkuji všem za ujasnění. Nevím, zda se na tomto fóru témata zamykají, ale zde se to zdá být vyřešené.