【问题标题】:CSRF Token generate different one each GET method (Laravel 5.3 server & Ionic 2 client)CSRF Token 生成不同的每个 GET 方法(Laravel 5.3 服务器和 Ionic 2 客户端)
【发布时间】:2017-12-13 06:38:59
【问题描述】:

我正在使用 Ionic 2 制作一个应用程序来登录 Laravel 5.3 服务器。当我从 Postman GET CSRF Token 时,我看到 CSRF Token 永远不会改变,即使我 GET 多少次(除非会话结束)。因此,当 Post 带有用户名和密码的令牌时,我可以从 Postman 登录。但是从我的 Ionic 2 应用程序中,每次我 GET CSRF 令牌时,CSRF 令牌都会更改为另一个。所以 CSRF 验证总是返回错误。

You can see the CSRF Token has been changed

我的 GETLaravel 服务器返回 CSRF Token:

Route::get('api/csrf', function() {
    return Session::token();
});

我从 Ionic 应用客户端执行的 GET 方法:

token() {
    this._token = this.http.get('http://localhost:8000/api/csrf').map((res:Response) => res.text()).subscribe(data => {
        consoler.log(data);
    });
}

我知道问题是我没有以正确的方式保存令牌或使用 session cookie 进行某些操作。如果你们有任何想法,请帮助我!感谢您阅读所有问题!

p/s: 1. 我的英文不好,如有错误请见谅。 2. 我正在使用 Ionic 开发 Cordova 应用程序(我认为是 Ionic 选项卡应用程序)和使用 Laravel 的 API 服务器

【问题讨论】:

  • 您是在开发 API 还是 Web 应用程序?
  • 我正在开发 API 服务器以及移动和网络应用程序

标签: session ionic2 client-server laravel-5.3 csrf


【解决方案1】:

如果您正在开发一个 RESTful API,通过 Authorization 标头进行身份验证,那么您完全不需要 CSRF 保护。

CSRF 发生在另一个网站向您的网站发出请求时,由于身份验证基于 cookie 或类似的东西,该网站恰好通过了身份验证

当身份验证恰好在 HTTP 标头上时,其他网站根本无法制作表单来执行此类请求,它们没有足够的权限向其请求添加标头,因此,请求将未经身份验证并且用户将是安全的。如果您将授权令牌存储在 localStorage 中,那么他们也无法访问它。

所以基本上,通过 Authorization 标头验证您的 API 并禁用 CSRF 保护,然后就可以了。

【讨论】:

  • 是的,我正在使用 RESTful API。但是当我向服务器发送请求登录时,它返回了 (1/1) TokenMismatchException in VerifyCsrfToken.php (line 68) 。我检测到来自服务器的 CSRF Token I GET 不是唯一的。所以,我认为问题是来自服务器的 CSRF 令牌没有存储在我的应用程序中(以某种方式)。我想知道我该如何存储它。
  • 但是如果我禁用 CSRF 保护,我的应用仍然是私有的吗?
  • 我确认我正在使用 Ionic 开发 Cordova 应用程序(我认为是 Ionic 选项卡应用程序)
  • 取决于您的身份验证方式。如果您使用 Authorization 标头进行身份验证,您将是安全的。而对于报错,需要禁用CSRF保护中间件。
  • 谢谢!我将尝试使用其他方式进行身份验证,如您建议的Authorization
【解决方案2】:

哦,我找到了解决方案,我忘记了这是愚蠢的基础:Laravel 拥有它自己的 API 身份验证。所以我需要做的就是使用来自 API 身份验证的令牌,而不是使用 CSRF 的 Cookie 进行普通身份验证。 感谢您阅读我的问题!如有打扰请见谅^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2019-06-04
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2014-04-08
    相关资源
    最近更新 更多