我正在使用Laravel 5.5和Angular 4构建SPA。我对验证我的api请求的“最佳”(安全,安全,最佳实践等)方式感到困惑。目前,我有一个传统的基于会话的登录系统,在用户登录后,重定向到我的Angular应用程序的索引页面 - 其中包含整个应用程序。所有后续与服务器的交互都是通过api调用完成的。
根据一些基本教程,我有以下设置:为每个用户分配一个60个字符的随机字符串,作为其api令牌。在他们使用用户名和密码登录后,api令牌将直接输出到标头中meta
标签中的HTML。然后,Angular会抓取此令牌并将其传递到每个api调用的标头中。
但是,我已经读过,不应该通过非SSL连接传递令牌(以避免中间人攻击),并且该令牌应该自动生成/设置为过期等。< / p>
所以我的问题:
关于最后一点,这似乎是使用Laravel的CSRF令牌的标准做法?也许我刚读过太多偏执的博客文章?
答案 0 :(得分:0)
在现代网络编程中,你永远不会有太多的令牌。 访问令牌,刷新令牌,反XSRF令牌等等。
这是我收到很多问题的最后一种令牌 最近。具体来说,是否需要防止跨站点 在构建基于API的应用程序时请求伪造?
在浏览器可以隐式验证用户身份的任何应用程序中,您需要防止跨站点请求伪造。当浏览器自动发送身份验证信息(使用cookie进行身份验证时)以及使用Windows身份验证的应用程序时,会发生隐式身份验证。
通常, API不使用Cookie进行身份验证。相反, API 通常使用承载令牌,以及在中运行的自定义JavaScript代码 浏览器必须通过显式添加令牌来发送令牌 请求。
但是,也有一些API与Web应用程序位于同一服务器进程中,并使用与应用程序相同的cookie进行身份验证。这种情况下您必须使用防伪标记来阻止XSRF。
您的项目或应用程序是:
最好的方法是使用基于令牌的服务,以下链接用于laravel 5.5用于创建令牌和身份验证令牌以及使用apis的用户:https://laravel.com/docs/5.5/passport