Symfony:使用CSRFProtection安全删除链接

tam*_*mir 6 php symfony1 csrf

我有一个删除链接来按ID删除Comment对象 /comment/:id/delete

为了保护这个链接,我在链接中添加了一个csrf标记

$CSRFTokenForm = new BaseForm();
$link = url_for(..., array('_csrf_token' => $CSRFTokenForm->getCSRFToken()));
Run Code Online (Sandbox Code Playgroud)

并且在executeDelete中我使用该checkCSRFProtection()方法,一切正常.

唯一的一点是每个评论都是由部分显示的,每个部分创建它自己BaseForm()以创建令牌,这是浪费时间,因为它们都是相同的.

您是否更好地了解如何提高效率,例如静态getCSRFToken()方法或创建全局BaseForm()

bin*_*ous 5

使用SF的方法=>删除.它为您创建CSRF令牌:

<?php 
    echo link_to('comment/' . $comment->getId() . '/delete', 
             array(
                 'method'  => 'delete', 
                 'confirm' => 'Do you really want to delete the comment??', 
                 'title'   => 'Delete'
             )
         ); 
?>
Run Code Online (Sandbox Code Playgroud)