Php Symfony:使用CSRFProtection保护安全删除链接

Php Symfony:使用CSRFProtection保护安全删除链接,php,symfony1,csrf,Php,Symfony1,Csrf,我有一个删除链接,可以按ID/Comment/:ID/delete 为了保护这个链接,我在链接中添加了一个csrf令牌 $CSRFTokenForm = new BaseForm(); $link = url_for(..., array('_csrf_token' => $CSRFTokenForm->getCSRFToken())); 在executeDelete中,我使用了checkCSRFProtection()方法,并且一切都很好 唯一的问题是,每个注释都由一个分部显示,

我有一个删除链接,可以按ID
/Comment/:ID/delete

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

$CSRFTokenForm = new BaseForm();
$link = url_for(..., array('_csrf_token' => $CSRFTokenForm->getCSRFToken()));
在executeDelete中,我使用了
checkCSRFProtection()
方法,并且一切都很好

唯一的问题是,每个注释都由一个分部显示,每个分部都创建自己的
BaseForm()
,以便创建标记,这是浪费时间的,因为它们都是相同的


您对如何使其更高效有更好的想法吗,比如静态
getCSRFToken()
方法或创建全局
BaseForm()

使用SF的方法=>delete。它为您创建CSRF令牌:

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

使用jQuery插件尝试:

jq\u链接到远程('comment/'.$comment->getId()./delete',数组('csrf'=>1))


在中找到它,并且他们也使用BaseForm实例进行了此操作。

是的,这是一个jQuery插件错误。如果您使用的是sfJqueryReloadedPlugin-1.4.3,您需要更改插件目录中jQueryHelper文件的源代码,并将“BaseForm”而不是“sfForm”放在“csrf=>1”部分中,如果我使用
jq_link_to_remote()
,我不知道Symfony的jQuery插件。但是您可以尝试相同的方法:
jq\u link\u to\u remote($name,array('method'=>'delete',…),$html\u options=array())
它不起作用。。无论如何,我不太喜欢symfony输出删除链接的方式。。是否可以在每次都不创建新的
BaseForm()
的情况下获取csrf?