我有一个关于在链接上使用 CSRF 令牌的问题。就我而言,我想用 CSRF 令牌保护我的删除链接。我已经找到了如何做到这一点:
在我的模板中,我使用Twig的csrf_token()函数:
<a class="btn btn-danger" value="Delete" href="{{ path('tube_delete', { 'id': tube.id, 'token': csrf_token('deleteTube-' ~ tube.id) }) }}">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
</a>
在我的控制器中,isCsrfTokenValid()方法:
if (!$this->isCsrfTokenValid('deleteTube-'.$tube->getId(), $request->get('token'))) {
$this->addFlash('warning', 'The token is not valid !');
}
所有这些工作都很好,但我有一个关于 CSRF 令牌的一般性问题,如您所见,我为每个删除链接(例如:、、...)使用不同的令牌,deleteTube-1
对象deleteTube-2
id 在令牌 id 中。然后,在我的会话中,我创建了很多 CSRF 令牌。
这是一个好方法,还是我应该对一个类的所有删除链接使用相同的标记?使用令牌 ID,例如:deleteTube
for Tube
、deleteComment
forComment
等?我认为最好为每个链接使用不同的令牌,但也许这是开销?