Php Symfony:使用CSRFProtection保护安全删除链接
我有一个删除链接,可以按IDPhp 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()方法,并且一切都很好 唯一的问题是,每个注释都由一个分部显示,
/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?