我有一个问题让安全组件验证发布的表单,并且它保持了黑帽操作。仔细研究代码,我发现哈希标记不匹配。用于验证表单的发布数据的CakePHP安全组件标记是不同的 - >黑洞
在发布的表单中,只有一个字段被验证(在Security :: _ validatePost中)被锁定。但是我在查找Form->创建令牌的生成方式和方法时遇到问题。
令牌不匹配的典型原因是什么?我应该在哪里检查蛋糕是如何生成令牌的['_Token'] ['fields']和? (使用蛋糕2.3.7)。该表单也使用ajax验证。
编辑:当我倾倒了从安全::的generateToken的$令牌值,它看起来像
阵列( [关键] => ddc88faacf41985f41359ff99d9c6f87549611c7 [allowedControllers] =>阵列 ( )
[allowedActions] => Array ( ) [unlockedFields] => Array ( ) [csrfTokens] => Array ( [f8c40609a0a86db23bfa5ea2d258723d3caff55a] => 1375207459 [084c3363363591c3024c59452899a2f4f60ecf99] => 1375207655 [0344c686c549927c1e27729ae95d879a4034bdab] => 1375207678 [dfb940ec034e82b10f7b3cc5677734da6896dfbc] => 1375207762 [ddc88faacf41985f41359ff99d9c6f87549611c7] => 1375207791 )
但是,对于创建的表单,表单发布时Security :: _ validatePost中的标记是
令牌= 6521bb362f8323e8f871814fc5d37a79c93e294e 检查= e8c40d174a23e8797d906d6e381a9a0acc1425ed
当令牌从
$check = $controller->request->data;
$token = urldecode($check['_Token']['fields']);
拍摄和检查后重新定义为:
$check = Security::hash(serialize($fieldList) . $unlocked . Configure::read('Security.salt'), 'sha1');
然后$令牌和$检查比较和错误哪些导致黑洞。
你如何列出它们?它似乎只是检查我认为是默认行为的ID。 (我编辑了我的问题以添加更多详细信息) – user6972
我查看了安全配置设置,并且根据提交的字段,它似乎不是白名单问题。令牌不匹配。我可以在哪里找到问题的任何想法? – user6972