为防止CSRF攻击,我将带有当前CSRF令牌的状态参数添加到外部链接。当外部页面将用户重定向回我的网站时,它将包含状态。
在一个简单的条件下,我可以在控制器中对其进行检查:
START RequestId: 1155953d-b645-11e8-883f-bb9cff5533aa Version: $LATEST
2018-09-12T04:33:59.966Z 1155953d-b645-11e8-883f-bb9cff5533aa { TopicArn: 'arn:aws:sns:eu-west-1:XXX:XXX',
Message: 'TEST' }
2018-09-12T04:34:00.516Z 1155953d-b645-11e8-883f-bb9cff5533aa Promise { <pending> }
END RequestId: 1155953d-b645-11e8-883f-bb9cff5533aa
REPORT RequestId: 1155953d-b645-11e8-883f-bb9cff5533aa Duration: 610.75 ms Billed Duration: 700 ms Memory Size: 128 MB Max Memory Used: 32 MB
现在,我想为它编写一个通过if条件的测试,但是csrf_token()在测试目录中为空,但是在控制器中不是。不幸的是,它失败了。这是测试的摘录:
if($data['state'] !== csrf_token()){
throw new TokenMismatchException;
}
是否可以之前生成令牌?