2012-02-21 6 views
2

Я добавил следующий код в моей форму входаПроверка кода хэша Zend CSRF обрабатывается автоматически?

$csrf = $this->createElement('hash', 'csrf', array('salt' => 'unique')); 

И в действии контроллера у меня есть

if (!$admin_login_form->isValid($_POST)) { 
    //Throw Error 
}else{ 
    // Redirect to index 
} 

Теперь вопрос в том, что делает Zend ручку хэш проверки автоматически код или мы должны закодировать что-то вручную проверить его?

ответ

5

Ответ отрицательный. Вам не нужно ничего делать, чтобы проверить, действительно ли хэш действителен или нет.

При создании элемента Zend_Form_Element_Hash он автоматически добавляет в форму формуляра (используя Zend_Validate_Identical) и регистрирует хэш в новом сеансе пространства имен.

После этого, как только вы вызываете метод isValid(), если CSRF, сохраненный в сеансе при визуализации страницы, не совпадает с тем, который был отправлен в последнем запросе, Идентификационный валидатор завершится с ошибкой и вернет ошибку.

Edit: Кроме того, вы можете добавить соль в элемент и хэш будет генерировать в соответствии со следующим шифрованием: md5(mt_rand(1,1000000) . $this->getSalt() . $this->getName() . mt_rand(1,1000000).

Чтобы ответить на ваш второй вопрос в свой комментарий, два элемента не вызывает никаких сеансов конфликтов, поскольку пространство имен используется для хранения хэш, это определить по трем критериям:

  1. имя класса
  2. Соленого
  3. имя элемента

Например, ваш элемент, вероятно, будет храниться в этом пространстве имен: "Zend_Form_Element_Hash_unique_ имеет h "где" unique "- значение соли и хеш-имя вашего элемента.

+0

Благодарим вас, кроме того, можете ли вы рассказать мне, что такое слово «соль»? И если у меня будет более одной формы, будет ли конфликт в этом сеансе? –

+0

Ну, так как английский не мой родной язык, я не пойду на глубокое определение, но, на мой взгляд, соль - это случайная строка, которую вы можете объединить с хэшем/паролем, чтобы сделать его еще более безопасным. Я отвечу на ваш второй вопрос в своем первоначальном ответе. – Liyali

+0

Еще раз спасибо, кажется, у вас хорошее знание рамки zend. У вас есть какие-либо материалы для чтения или учебные пособия для начинающих Zend? Я хочу углубиться. Еще раз, спасибо. –

Смежные вопросы