我有无类表单,使用GET方法,无法禁用csrf保护。我想使用GET方法,因为用户必须有选项来提供指向他/她的搜索的链接。当用户提交表单时,URL中会出现\u标记。如果其他用户尝试使用它,您知道,“CSRF令牌无效。请尝试重新提交表单。”出现。
这是控制器中的功能:
/**
* @Route("/tips/all", name="all_tips")
*/
public function listAction(Request $request)
{
$period = 0;
$sport = array('3', '4', '15', '19', '20', '29', '33');
$defaultData = array(
'csrf_protection' => false,
'period' => 0,
'sport' => $sport,
);
$form = $this->createFormBuilder($defaultData)
->add('period', 'choice',
array('choices' => array(
'0' => "All time",
'1' => "Last month",
'2' => "Last 3 months",
'3' => "Last year",
),
'expanded' => false,
'multiple' => false,
)
)
->add('sport', 'choice',
array('choices' => array(
'3' => 'Baseball',
'4' => 'Basketball',
'15' => 'Football',
'19' => 'Hockey',
'29' => 'Soccer',
'33' => 'Tennis',
),
'expanded' => true,
'multiple' => true,
'data' => $sport,
))
->add('send', 'submit')
->setMethod('GET')
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$period = $data['period'];
$sport = $data['sport'];
}
$em = $this->getDoctrine()->getManager();
$addSport = !empty($sport) ? ' p.sport in (' . implode(',', $sport) . ')' : '';
$dql = "
SELECT
p
FROM
AppBundle:Predictions p
WHERE " .
$addSport .
$this->fromTo($period, 'dql');
$query = $em->createQuery($dql);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query, $request->query->getInt('page', 1), 50, array(
'defaultSortFieldName' => 'p.predictDate',
'defaultSortDirection' => 'DESC',
)
);
return $this->render('AppBundle:Tips:all.html.twig', array(
'pagination' => $pagination,
'form' => $form->createView(),
));
}
这是twig中的代码
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
我的Symfony版本是v2。8.45.
我试图通过csrf_protection=
我做错了什么?
编辑:嗯,我刚刚看到了注射SQL可能性。:-(我会解决的。
问题是您在数据阵列中添加了csrf_保护选项,而不是选项阵列。createFormBuilder方法的声明为:
protected function createFormBuilder($data = null, array $options = array())
因此,您必须按如下方式更改代码:
$defaultData = array(
'period' => 0,
'sport' => $sport,
);
$options = array('csrf_protection' => false);
$form = $this->createFormBuilder($defaultData, $options)
...
问题内容: 我正在构建一个通过webservices与symfony2应用程序对话的移动应用程序,我找不到在特定控制器/操作上禁用csrf保护的方法 我想将注册数据发布到此操作并使用sf2表单验证。我没有在移动应用程序中致电该表格 无法在操作中更改容器参数,因为它是冻结参数而引发异常… 我不想禁用整个应用程序的表单保护 有什么线索吗? 谢谢 ! 更新:使用symfony 2.1.x 问题答案: 如
首先,我对Symfony 2是个十足的傻瓜。这个问题听起来很简单,如果我试着把一些背景放在为什么和如何需要这个问题上,它会开始变得混乱。 本质上,我创建了一个表单,我使用条令等手动处理、验证和插入表单。我在控制器操作中手动创建表单(它是根据从另一个对象检索的值动态构建的)。我想也许有更好的方法可以做到这一点,但由于我对Symfony还不熟悉,而且我已经用了好几天的时间拖网了,所以我找不到任何解决方
我的Spring Boot REST API受KeyClope实例的保护。由于CSRF保护只允许GET和POST,我想禁用它。然而,我的方法似乎不起作用,因为REST API将为任何来源不同于的请求返回HTTP状态403http://localhost:8080.以下是我如何配置我的安全性: 带有http://localhost:8080起源的请求将起作用: 编辑: 这就是我的CustomCors
我正试图用crsf令牌保护我的Zend表单。如果我在表单中添加token元素,它总是会向我返回notEmpty错误消息。我做错什么了吗?谢谢 控制器中的操作: 在我看来,我呈现表单并转储错误消息 每次验证表单后,我都会收到如下错误消息: 如果我给元素填充了正确的值,最后一个错误总是token-NotEmpty,因此我的表单永远无效。
我正在使用Symfony2。0和FOSUserBundle,并希望在我的登录表单上禁用csrf令牌。 我已经禁用了csrf保护全球在我的网站在我的config.yml: 这工作得很好,没有csrf字段添加到我的表单中。但是,这不适用于登录表单。仅在此表单上,如果我没有将令牌包含在表单中,则会出现“无效的CSRF令牌”错误: 如何在登录表单上禁用CSRF令牌?
有没有办法只使用spring security实现CSRF保护,而不使用身份验证和授权等其他功能? 我尝试了以下配置,但它关闭了spring security的所有功能。想知道是否有一种方法可以配置csrf功能。