【问题标题】:How to send CSRF token through a cookie in Laravel 4, instead through a hidden input field如何通过 Laravel 4 中的 cookie 发送 CSRF 令牌,而不是通过隐藏的输入字段
【发布时间】:2014-04-10 22:32:30
【问题描述】:

我使用 Laravel 作为 REST API - 通过另一个域与 SPA 通信。

我需要帮助将 CSRF 令牌发送到我的应用程序。

我无法在隐藏字段中回显它,因为我的 SPA 在另一个域中。

我可以将 CSRF 令牌放在 cookie 中吗?

我该怎么做?

我可以通过获取请求发送它 - 但我不确定它是否安全。

注意:为了清楚起见,我正在考虑在我的第一个 Get 请求中将令牌发送到 cookie 中。

谢谢!

【问题讨论】:

  • 伙计们,你们有什么看法……在这种情况下,通过 cookie 发送令牌是否比直接通过 JSON 响应更安全?

标签: php cookies laravel


【解决方案1】:

只需使用函数csrf_token() 来创建您的cookie。

$tok = Cookie::make('token', csrf_token(), 30);
return Response::make('tadaaam')->withCookie($tok);

或者像这样使用它来附加到视图。

$view = View::make('home');
$tok = Cookie::make('token', csrf_token(), 30);
return Response::make($view)->withCookie($tok);

为了验证你应该添加一个新的过滤器。

Route::filter('csrfcookie', function()
{
    if (Session::token() != Cookie::get('token'))
    {
        throw new Illuminate\Session\TokenMismatchException;
    }
});

【讨论】:

  • 泰曼纽尔,它有效。在通过 JSON 而不是通过 cookie 发回令牌时,您输入了什么?关于安全性...通过 cookie 更安全吗?
  • 你当然可以,但为什么要用 JSON 重新发明 cookie?我认为在安全性方面没有明显区别,只是为您做更多工作。
  • 小心。 Laravel 4.1 中默认对 Cookie 进行加密。
猜你喜欢
  • 2016-04-07
  • 1970-01-01
  • 2015-05-27
  • 2019-12-22
  • 2015-07-04
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2021-08-29
相关资源
最近更新 更多