zend-framework - 如何使用 Zend_Form_Element_Hash?

标签 zend-framework csrf

然后我尝试使用 Zend_Form_Element_Hash 它在每个请求中重新生成一个散列。

在我的代码中:

 // form
 $this->addElement('hash', 'hihacker', array('salt' => 'thesal'));

然后我转储 $_SESSION 我看到每个页面重新加载的新值。

然后我发送一个表单,它报告错误“ token ‘28a5e0e2a50a3d4afaa654468fd29420’与给定的 token ‘a64407cc11376dac1916d2101de90d29’不匹配”,每次都是新的 token 对

最佳答案

$form = new Form();
$form->addElement('hash', 'hihacker',
    array('salt' => 'YOUR TOO MUCH SALTY TEXT !!@@'));
if ($this->_request->isPost() && $form->isValid($this->_request->getPost())) {
    // Valid ! you are safe do what ever you want .
} else if (count($form->getErrors('request_token')) > 0) {

    ///get him to the error controller 
    $this->_forward('csrf-forbidden', 'error');
    return;
}

它对我来说效果很好,但请仔细检查您的 session 设置

" 在内部,该元素使用 Zend_Session_Namespace 存储一个唯一标识符,并在提交时检查它(检查 TTL 是否已过期)。然后使用“相同”验证器来确保提交的哈希与存储的哈希相匹配。 'formHidden' View 助手用于呈现表单中的元素。 “ form ZF docs

关于zend-framework - 如何使用 Zend_Form_Element_Hash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1627732/

相关文章:

php - admin内页使用CSRF重要吗?

zend-framework - Zend Framework Url View Helper 默认添加 "id"

php - 在中型企业网站中使用 Zend Framework 是个好主意吗?

php - 使用 Zend_Form_Decorator_FormErrors 将 Zend_Form 错误定位在表单上方

php - Zend Framework 2 CSRF 保护

node.js - 用于 Express/Connect 的 Ajax 兼容中间件

zend-framework - 让 Visual Studio Code 识别 Zend 框架库中的类

zend-framework - 从 Zend Controller 插件中获取 View 对象

rest - 使用 Angular 前端和 Drupal 7 后端处理 CSRF/XSRF token

post - 没有模板的 Tornado XSRF token