nuxt/auth 如何真正安全?
How is nuxt/auth really secure?
让我们假设客户为此目的打开了您的 nuxt.js website on the index page. From there, they authenticate (you used @nuxtjs/auth-next)。然后他们转到只有经过身份验证的用户才能看到的安全页面。这个安全页面是一个 .vue 文件,位于你的“页面”文件夹中 middleware: ["auth"]
.
现在,这个页面如何真正安全?
我的意思是,恶意用户就不能在没有经过身份验证的情况下调动页面并访问它吗?因为这种情况下的“安全性”仅在客户端实现,对吗? [编辑]
你的应用程序最后是一个 SPA,如果你想绕过中间件的安全检查,你可以在页面上禁用 JS。但是,由于没有直接生成内容,您将看不到任何内容,因为它不在此处(作为静态文件)。
如果你的应用是同构的(基本上有一个 ssr: true
),auth 模块仍然会禁用对这些页面的访问(你可以仔细检查)。
最后,关键信息在以下时间收到:
- 您确实拥有有效的 JWT 令牌(在登录后)
- 您向后端提交 HTTP 查询
- 后端确认并且令牌有效
- 后端通过 HTTP 响应为您提供敏感信息
最后,您的客户端代码不需要是安全的。如果有人以某种方式 入侵 您的客户端状态并到达敏感页面,他仍然没有有效的 JWT 令牌,因为验证仍在后端进行。
只有在将正确的凭据发送到后端并让后端验证这些凭据时才能生成的凭据。
Now, how is this page really secure ?
如果客户端提供了有效的访问令牌,则受保护的内容将从请求中提供。
受保护的内容在 运行 时间提供。
Because the "security" in this scenario is only implemented on the client side right ?
安全性不仅在客户端实现。
前提是:访问令牌已通过身份验证服务器的身份验证流程安全地获得。
如果这听起来不清楚,我建议阅读更多关于身份验证流程的内容。
Auth0 有一些关于不同流程的很好的文档。
https://auth0.com/docs/authorization/flows
Then, what is the best way to show a complex page to authenticated users only ?
内容在 运行 时提供。服务器端或客户端。
这里有一些 Nuxt 的设置指南。
这是我从列表中找到的第一个 (Auth0)。
https://auth.nuxtjs.org/providers/auth0
我不知道这些指南是如何更新的,但身份验证服务提供商往往会自己更新指南。
让我们假设客户为此目的打开了您的 nuxt.js website on the index page. From there, they authenticate (you used @nuxtjs/auth-next)。然后他们转到只有经过身份验证的用户才能看到的安全页面。这个安全页面是一个 .vue 文件,位于你的“页面”文件夹中 middleware: ["auth"]
.
现在,这个页面如何真正安全?
我的意思是,恶意用户就不能在没有经过身份验证的情况下调动页面并访问它吗?因为这种情况下的“安全性”仅在客户端实现,对吗? [编辑]
你的应用程序最后是一个 SPA,如果你想绕过中间件的安全检查,你可以在页面上禁用 JS。但是,由于没有直接生成内容,您将看不到任何内容,因为它不在此处(作为静态文件)。
如果你的应用是同构的(基本上有一个 ssr: true
),auth 模块仍然会禁用对这些页面的访问(你可以仔细检查)。
最后,关键信息在以下时间收到:
- 您确实拥有有效的 JWT 令牌(在登录后)
- 您向后端提交 HTTP 查询
- 后端确认并且令牌有效
- 后端通过 HTTP 响应为您提供敏感信息
最后,您的客户端代码不需要是安全的。如果有人以某种方式 入侵 您的客户端状态并到达敏感页面,他仍然没有有效的 JWT 令牌,因为验证仍在后端进行。
只有在将正确的凭据发送到后端并让后端验证这些凭据时才能生成的凭据。
Now, how is this page really secure ?
如果客户端提供了有效的访问令牌,则受保护的内容将从请求中提供。 受保护的内容在 运行 时间提供。
Because the "security" in this scenario is only implemented on the client side right ?
安全性不仅在客户端实现。 前提是:访问令牌已通过身份验证服务器的身份验证流程安全地获得。 如果这听起来不清楚,我建议阅读更多关于身份验证流程的内容。 Auth0 有一些关于不同流程的很好的文档。 https://auth0.com/docs/authorization/flows
Then, what is the best way to show a complex page to authenticated users only ?
内容在 运行 时提供。服务器端或客户端。 这里有一些 Nuxt 的设置指南。 这是我从列表中找到的第一个 (Auth0)。 https://auth.nuxtjs.org/providers/auth0
我不知道这些指南是如何更新的,但身份验证服务提供商往往会自己更新指南。