2009-04-15

CSRF使用注意事项和form的标准用法

类归于: symfony — 标签:, maker @ 13:17

我在<开启symfony的CSRF保护>一文中简单的介绍了CSRF的概念和使用方法, 由于那篇文章是学习symfony的初期写的, 所以对form和csrf理解的还不够透彻, 通过之后的学习和研究又渐渐的了解了一些细节.

首先, 在form被正确的应用的情况下, csrf是完全可以被兼容的, 这里先简单讲一下自定义的form的注意事项.

在定义form的时候, 我们需要定义名字格式, symfony自动生成的form应该已经设定了格式,不再需要重新设置

class CityForm extends BaseCityForm{
...
function setup()
{
...
$this->widgetSchema->setNameFormat('city[%s]');
...
}
...
}

这样我们将form中所有元素的值都放到了一个Parameter的子数组中.接下来在取得表单值的时候需要使用如下方法.

$this->form->bind($request->getParameter($this->form->getName()));
if($this->form->isValid()){
...
}else {
...
}

这样避免了手动构造bind的参数,也避免了在bind的参数中出现多余字段的问题,而且还可以完全兼容csrf,这也正是官方生成的代码所使用的方法。

本文完。

评论暂缺 »

还没有任何评论。

这篇文章上的评论 RSS feed TrackBack URL

留下评论

WordPress 所驱动