问题场景:
我正在用Laravel 4创建一个博客.负责创建新博客文章的表单由CSRF保护(Laravel Docs:CSRF Protection)构建.
到目前为止一切正常,但似乎laravel不会在每个请求上刷新csrf标记.
出现的问题是,如果用户点击浏览器的后退按钮返回提交的表单,则输入的数据仍然存在,用户可以"重新提交"表单.这可能会为垃圾邮件发送者打开一扇门.
通常这是由CSRF令牌阻止的,因为它在每次请求时都会被刷新,但是Laravel似乎并没有这样做.
我使用laravel"资源控制器"方法(Laravel Docs:Resource Controllers)来处理表单和博客帖子视图.此外,在将提交的输入存储在数据库(MySQL)中之前,我使用Laravels输入验证器.
所以出现了以下想法:
以某种方式强制Laravel 4在每次请求时自动重新生成csrf
生成另一个令牌并手动将其包含在表单中
在用户会话(php或数据库)中保存表单子目录的时间戳,并在时基上限制新表单提交
我个人更喜欢第一个想法,但遗憾的是我无法找到一种方法来强制laravel表现我想要的样子,而不会破坏"Illuminate"本身(我想保持"原样"以便能够更新laravel没有"麻烦hoff "^^).
你会推荐什么?
你是怎么自己处理这个问题的?