zf2 проблема безопасности проверки капчи

Я использую zf2 капчу в форме:
в контроллере:

public function loginAction() {
$loginForm = new LoginForm ( );
if ($this->getRequest ()->isPost ()) {
$postedValues = $this->getRequest ()->getPost ();
$loginForm->setData ( $postedValues );
if ($loginForm->isValid ()) {
echo 'valid';

} else {
echo 'invalid';
}
}
}
$view ['loginForm'] = $loginForm;
return new ViewModel ( $view );
}

в моем логине у меня есть:

public function __construct($adapter) {
parent::__construct ();
$this->setAttribute ( 'method', 'post' );
$this->setAttribute ( 'name', 'loginForm' );
$inputFilter = new InputFilter ();
$factory = new Factory ();
$captchaImage = new CaptchaImage(  array(
'font' => dirname(__DIR__).'/../../../../public/fonts/arial.ttf',
'width' => 150,
'height' => 75,
'dotNoiseLevel' => 40,
'lineNoiseLevel' => 3 ,
'wordLen' => 5
)
);
$this->add(array(
'type' => 'Zend\Form\Element\Captcha',
'name' => 'captcha',
'options' => array(
'label' => 'Security Question',
'captcha' => $captchaImage,
),
));
$submit = new Element\Submit ( 'submit' );
$submit->setValue ( _ ( 'Login' ) )->setAttributes ( array (
'id' => 'submitbutton',
'class' => 'btn btn-default'
) );
$this->add ( $submit );
}

и в моем файле phtml:

if(isset($this->loginForm)){
$form = $this->loginForm;
$form->prepare();
var_dump($form->getMessages());
echo $this->form()->openTag($form);
?>
<div class="col-md-6">
<?php
foreach ($form as $element) {

echo '<div class="form-group">
<label class="control-label">
'.
_($element->getLabel()).
'</label>'
.$this->formElement($element).
'
</div>';
}
?>
</div>
<?php
echo $this->form()->closeTag();
}

Моя проблема в том, что когда я отправляю форму, все работает отлично. Функция isValid делает то, что должна, и корректно проверяет капчу. Но когда я пересылаю ту же информацию через кнопку обновления моего браузера, функция isValid снова возвращает true, что недопустимо, поскольку изображение изменилось. Кажется, что старая капча все еще действительна для zf2, что неверно и создает проблему безопасности, позволяющую хакерам легко обойти ее. Я что-то здесь упускаю?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …