vue.js nuxt/auth如何真正安全?

ua4mk5z4  于 7个月前  发布在  Vue.js
关注(0)|答案(2)|浏览(115)

让我们想象一下,一个客户端在索引页面上打开了你的nuxt.js网站。从那里,他们进行了身份验证(你使用了@nuxtjs/auth-next)。然后他们移动到一个只有经过身份验证的用户才能看到的安全页面。这个安全页面是一个.vue文件,位于你的“pages”文件夹中,带有middleware: ["auth"]

现在,这个页面如何真正安全?

8oomwypt

8oomwypt1#

你的应用程序是一个SPA,如果你想绕过中间件的安全检查,你可以禁用页面上的JS。但是,由于没有直接生成内容,你不会看到任何东西,因为它不在这里(作为静态文件)。
如果你的应用是同构的(基本上有一个ssr: true),auth模块仍然会禁止访问这些页面(你可以仔细检查)。
最后,在以下情况下接收关键信息:

  • 你有一个有效的JWT令牌(在一些登录后)
  • 你向后台提交一个HTTP查询
  • 后端确认它并且令牌有效
  • 后端通过HTTP响应提供敏感信息

最后,您的客户端代码不需要是安全的。如果有人以某种方式 * hack * 您的客户端状态并到达敏感页面,他仍然没有有效的JWT令牌,因为验证仍然发生在后端。
只有当向后端发送适当的凭据并让后端验证这些凭据时才能生成。

kupeojn6

kupeojn62#

那么,这个页面如何真正安全呢?
如果客户端提供了有效的访问令牌,则受保护的内容将从请求中提供。受保护的内容在运行时提供。
因为这个场景中的“安全性”只在客户端实现,对吗?
安全性不仅在客户端实现。前提是:访问令牌已通过auth-server的身份验证流程安全地获得。如果这听起来不清楚,我建议阅读更多关于auth流程的信息。Auth 0有一些关于不同流程的好文档。https://auth0.com/docs/authorization/flows
那么,只向经过身份验证的用户显示复杂页面的最佳方法是什么?
内容在运行时提供。服务器端或客户端。这里有一些Nuxt的设置指南。这是我从列表中找到的第一个(Auth 0)。https://auth.nuxtjs.org/providers/auth0
我不知道这些指南有多新,但认证服务提供商往往自己更新指南。

相关问题