Elemento CSRF
O elemento CSRF é um elemento de segurança que ao ser exibido, preferencialmente em modo “hidden”, gera um código e será enviado junto com os outros dados digitados pelo usuário quando houver submissão.
Ao verificarmos se os dados dentro do formulário estão válidos, haverá uma verificação desse código de segurança, e caso ele não exista ou seja diferente do esperado seu formulário não passará na validação.
Esse elemento impede que formulários falsos e maliciosos sejam criados e apontem seus posts para nossa aplicação, gerando assim inserções ou alterações sem segurança alguma. Com esse código, torna-se impossível ser aceito uma submissão que não seja do nosso próprio formulário.
Abaixo o nosso exemplo de formulário com o elemento CSRF.
namespace Application\Form;
use Zend\Form;
class MyForm extends Form {
function __contruct() {
$this->setAttribute(‘method’, ‘post’);
$this->setAttribute(‘id’, ‘my-form’);
$this->add(
array(
‘name’ => ‘sex’,
‘type’ => ‘Zend\Form\Element\Select’,
‘options’ => array(
‘label’ => ‘Sex:’,
“value_options” => array(
“” => “- Choose your sex -“,
“0” => “Male”,
“1” => “Female”,
),
),
‘attributes’ => array(
‘style’ => ‘width: 350px’
)
)
);
$this->add(
array(
‘name’ => ‘name’,
‘options’ => array(
‘label’ => ‘Name:’
),
‘attributes’ => array(
‘class’ => ‘biggest’,
)
)
);
$this->add(
array(
‘name’ => ‘btnsubmit’,
‘options’ => array(
‘label’ => ‘Submit’
),
‘attributes’ => array(
‘class’ => ‘btn’,
‘type’ => ‘submit’
)
)
);
$this->add(
array(
‘type’ => ‘Zend\Form\Element\Csrf’,
‘name’ => ‘security’,
)
);
}
}
|
Para exibí-lo na view basta usarmos o ViewHelper FormHidden, que escreverá a tag do nosso elemento em um campo hidden, ou seja, de modo invisível aos usuários. Veja abaixo.
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formRow($form->get(‘name’));
echo $this->formRow($form->get(‘sex’));
echo $this->formHidden($form->get(‘security’));
?>
formButton($form->get(‘btnsubmit’)); ?>
|
form()->closeTag(); ?>