我正在使用phalcon 2.0.9。
我有一个登录表单,有csrf保护。
这是以下形式的代码:
<input type='hidden' id='token' name='{{ security.getTokenKey() }}' value='{{ security.getToken() }}' />
这是控制器中的验证:
if(!$this->security->checkToken()) {
// error code here
}
它完全适用于localhost,但是当我将它上传到服务器时,它总是失败。我在登录时使用ajax。在post请求之后,会话中的csrf标记与帖子中的标记不同。
是什么导致这种情况?
答案 0 :(得分:0)
信用:Daniel @ https://forum.phalconphp.com/discussion/922/csrf-protection-not-working
确保您在服务器上使用最新的Phalcon版本 并且要么使用论坛上的用户给出的服务器配置,要么将未发现的(404)动作移动到不包括CSRF TokenKey&amp;的控制器。密钥生成就是它的观点。
如果在服务器上找不到项目favion / robot.txt / img等,则会执行404操作,最终会重新生成CSRF令牌。
希望这会有所帮助。