Laravel 9 SPA使用nuxt进行身份验证,在cookie中保存令牌和会话安全吗?

pbpqsu0x  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(206)

所以我用nuxt3和laravel做了一个web应用程序,我似乎不能让SPA身份验证工作。所以我现在生成一个用户令牌并将其保存在cookie中,所以我的用户保持登录状态。2但是我怀疑这是否是一种安全的方法来保持我的用户的身份验证和执行其他操作。3我试着查找是否将其存储在cookie中是好的。但是关于这个问题有很多褒贬不一的评论。
(the我个人将其存储在cookie中的原因是因为nuxt3是ssr,如果它存储在本地存储中,我将无法获得令牌)
我知道cookie更受xsrf攻击的尊敬,本地存储更受xss攻击的尊敬。
但是我所理解的是,当我使用laravel的SPA身份验证时,那些会话和令牌也会保存在cookie中,对吗?所以这和在cookie中保存令牌有什么区别呢?

roejwanj

roejwanj1#

TLDR:将其存储在cookie中+添加一些标记。
这里是my other answerHTTPOnly,而Secure为它增加了一层安全性。
那个应该没问题。
XSRF不应该出现在您的网站上,但如果有人被网络钓鱼抓住,您就无法真正保护网站了。
安全领域是一件大事,一个系统永远不会刀枪不入:而是尽可能地遵循最佳实践。
您可以减轻损失,但要为令牌分配一个较短的TTL,并在运行于每个客户端导航的中间件上检查它们的生存能力。
我不是安全方面的Maven,但你可能也不需要。遵循这个建议,就认为你的工作完成了。
社会工程+其他漏洞可以导致您的网站被攻破在更容易的方式。
如果您是一家需要这些严格安全措施的大型企业,那么您可能也已经花费了数百万美元来确保网络安全。

pjngdqdw

pjngdqdw2#

如果您的Laravel API(假设您使用Laravel作为API)和SPA(Nuxt)位于同一个域,您可以使用基于Sanctum Cookie的会话身份验证。

1.在app/Http/Kernel.php中取消注解EnsureFrontendRequestsAreStateful中间件

'api' => [
   \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
],

2.在.env文件中添加SANCTUM_STATEFUL_DOMAINS

SANCTUM_STATEFUL_DOMAINS=localhost:3000

3.在config/cors.php中,将支持凭证更改为true

'supports_credentials' => true,

4.在点击登录端点之前,向“sanctum/csrf-cookie”发出请求,然后向登录端点发出POST请求

// Sanctum endpoint to generate cookie
    Route::get('sanctum/csrf-cookie', function () {
        return response('OK', 204);
    });

    Route::controller(AuthController::class)->group(function () {
        Route::post('auth/login', 'login');
    });

5.在应用程序的全局axios示例上启用“withCredentials”选项

axios.defaults.withCredentials = true;

相关问题