Nextras secured links – k čemu parametry?
- Casper
- Člen | 253
Mrkni na Bezpečnost & Nette v tomto videu (CSRF začíná od 20:20). Vysvětlení tvého dotazu je cca od 32:30.
- Magnus
- Člen | 65
Narazil jsem teď na menší problém, který se týká hodnoty parametru
_seq.
Potřebuji pomocí signálu upravit hodnotu v databázi, požadavek posílám
AJAXem. Problém je, že ID dostanu pomocí JS po kliknutí na určitý element
(není to formulář, ale pouze div).
Přesněji má uživatel seznam příchozích zpráv, z nichž se nepřečtené
zobrazují jinou barvou. Když uživatel klikne na box (vykreslený divem), tak
se pošle AJAXový požadavek, aby se zpráva označila jako přečtená.
Zjednodušeně to vypadá nějak takto:
<div class="messageBox" onclick="markMessageAsRead({$messageId})">
... obsah první zprávy
</div>
<div class="messageBox" onclick="markMessageAsRead({$messageId})">
... obsah druhé zprávy atp.
</div>
<script>
function markMessageAsRead(id)
{
var data = {"messageId": id}
$.get({link handleMarkMessageAsRead!}, data);
}
</script>
Makro mi samozřejmě vytvoří odkaz s určitou hodnotou v parametru _seq, ale jelikož se pro každý jiný parametr (v tomto případě ID zprávy) vytváří jiná hodnota, server pak hází Internal error, protože kontrola těch hodnot nesedí.
Jak byste to řešili?
- Jan Tvrdík
- Nette guru | 2595
Tohle by mělo snad fungovat:
public function handleMarkMessageAsRead($messageId = NULL)
{
// ...
}
(Volitelné parametry to nebere při výpočtu kontrolního hashe v potaz.)
- David Matějka
- Moderator | 6445
Koukam, ze to ignoruje
optional parameters. Takze mu dej v handle metode defaultni hodnotu (treba
NULL
) a melo by to jet.
Nebo vygenerovat cely odkaz do html (treba do data atributu)
<div class="messageBox" onclick="markMessageAsRead({$messageId})" data-mark-as-read-url={link handleMarkMessageAsRead! $messageId}>
pozde :(
Editoval matej21 (10. 1. 2015 20:45)