虽然用的Symfony /索纳塔的工作,我们所面临CSRF令牌无效错误。索纳塔CSRF令牌无效虽然形式正确
之前,同样的代码工作完美。我们放心,令牌是由形式正确公布。奇怪的是,这个错误只出现在选定的实体上。
这里浏览所有其他的Q/A不能解决问题。
还有什么可以让CSRF令牌无效,如果客户端和服务器之间的一般通信效果很好?
虽然用的Symfony /索纳塔的工作,我们所面临CSRF令牌无效错误。索纳塔CSRF令牌无效虽然形式正确
之前,同样的代码工作完美。我们放心,令牌是由形式正确公布。奇怪的是,这个错误只出现在选定的实体上。
这里浏览所有其他的Q/A不能解决问题。
还有什么可以让CSRF令牌无效,如果客户端和服务器之间的一般通信效果很好?
解决方案: 增加max_input_vars
在php.ini中,至少超过默认1000:
max_input_vars=2000
原因: 我们在nginx的发现记录什么导致了CSRF令牌失败。事实上,令牌失效只是一个普遍问题的症状。
以下三个错误日志条目让该解决方案:
* 357395的客户机请求体被缓冲到一个临时文件/ var /缓存/ nginx的/ client_temp/0000000742,客户端:192.168.10.152, 服务器:XXX请求:“POST /管理/实体/ 1234 /编辑uniqid = s588b2b142c3d2 HTTP/1.1" ,主机: “XXXX”, 引荐: “http://xxx/admin/entity/1234/edit”
max_input_vars
定义,除其他外,有多少投入乏将在$ _ POST请求接受。如果(缺省)限制超过1000,PHP将截断“来自请求的其他输入变量”。所以,CSRF标记被PHP截断了$ _POST var。error_admin:2017年1月27日12点19分19秒[错误] 51723#51723:* 357395的FastCGI 在标准错误发送:“PHP消息:PHP的警告:未知: 超过1000个输入变量为了增加限制变化max_input_vars在php.ini 在未知线0" ,而读取来自上游, 客户端响应标头:192.168.10.152,服务器:XXX,请求:“POST /管理/实体/ 1234 /编辑?uniqid = s588b2b142c3d2 HTTP/1.1“,上行: ”fastcgi://127.0.0.1:9000“,主机:”xxx“,引用者: ”xxx/admin/entity/1234 /编辑“
2017年1月27日十二时19分19秒[信息] 51723#51723 * 357395的recv()失败。 10.152,server:xxx,请求:“POST/admin/entity/1234/edit?uniqid = s588b2b142c3d2 HTTP/1.1”,上游: “fastcgi://127.0.0.1:9000”,主机:“xxx”,referrer: “xxx/admin/entity/1234/edit?uniqid = s588b2b142c3d2”