2011-08-15 3 views
3

를 쿼리 사용자가 아약스 요청을 보낼 때이 그런 세션이 생성 발생하면 I 양식Zend_Form의 CSRF 검증 요청에, 값을 여기에

$this->addElement('hash', 'csrf', array('ignore' => false));

에 CSRF를 추가하는 방법입니다 폼의 인스턴스를 생성하여 유효성을 검사하며 폼은 html 출력을 생성 한 초기 요청이 시작된 이후 첫 번째 아약스 요청에 대해 항상 유효합니다.

두 번째로 다른 시간에 AJAX 요청을 보낸 경우 발생합니다.

양식의 인스턴스가 원래 만든 것과 다른 csrf 값을 가지며 코드 작성이 끝나면 원래 작성된 세션도 삭제되므로 수신 된 값을 확인할 세션이 없으므로 폼이 확인되지 않고 다음 오류가 발생합니다.

No token was provided to match against

모든 아이디어는 행사에서 양식의 CSRF 값은 자동으로 세션에 저장됩니다?

+2

제목이 질문과 일치하지 않습니다. 수정을 고려하십시오. – Phil

+0

상기시켜 주셔서 감사합니다. – Yasser1984

답변

4

해시 값은 렌더링시 생성되고 각 요청 후에 무효화됩니다.

양식을 여러 번 제출할 수있는 AJAX 양식에서 Zend_Form_Element_Hash을 계속 사용하려면 AJAX 응답에 새 해시 값을 포함해야합니다. 응답을 받으면 양식 데이터를 업데이트해야합니다.