为什么Laravel 4 CSRF令牌不起作用?

lka*_*ono 9 csrf token laravel

我实际上正在玩Laravel 4.现在我在表单帖子上实现了CSRF令牌安全性.

问题是,这实际上并不是在会话中生成的令牌Session::token()总是相同的意义上,所以当我尝试重新提交表单甚至从另一台服务器发布表单时,安全检查不起作用Session::token() != Input::get('_token')( filters.php)

有人已经遇到过这个问题?

编辑:
好的,我找到了解释.对于每个机器/会话,令牌实际上是不同的.它现在更有意义:)感谢大家的帮助

Try*_*elf 9

提交表单时,在处理表单后,您应该更改CSRF令牌,这样Session::put('_token', md5(microtime()));可以防止表单重新提交..有关详细信息,您可以看到这个


Dri*_*ien 2

在表单内,您必须像这样创建令牌:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
Run Code Online (Sandbox Code Playgroud)

之后,令牌将与输入一起发送。因此,当您收到输入时,必须像这样检查令牌:

Route::post('register', array('before' => 'csrf', function()
{
    return 'You gave a valid CSRF token!';
}));
Run Code Online (Sandbox Code Playgroud)

这样,您将在访问路由之前放置一个过滤器来检查 CSRF 令牌。

从这里的Laravel 文档中得到了这个