我有一個問題讓安全組件驗證發佈的表單,並且它保持了黑帽操作。仔細研究代碼,我發現哈希標記不匹配。用於驗證表單的發佈數據的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