【发布时间】:2021-12-24 22:48:00
【问题描述】:
假设客户在索引页面上打开您的nuxt.js 网站。从那里,他们进行身份验证(您为此使用了@nuxtjs/auth-next)。然后他们移动到只有经过身份验证的用户才能看到的安全页面。这个安全页面是一个 .vue 文件,位于您的“pages”文件夹中,带有middleware: ["auth"]。
现在,这个页面真的安全吗?
我的意思是,恶意用户不能在没有经过身份验证的情况下修改页面并访问它吗?因为这个场景中的“安全”只在客户端实现对吧? [编辑]
【问题讨论】:
-
one way to display secure data on a page is to access it using asyncData from a secure backend API你从哪里得到这个?即使使用target: 'server',也不确定如何更安全,因为一旦水合完成,这个钩子将是客户端的。 -
asyncData 钩子也是客户端的,是的,但是如果您使用它使用 API 获取服务器上的数据,您可以在发送数据之前检查客户端是否有效。
-
如果您只想保护特定的页面子集,请创建conditional in your middleware。如果它是一个安全页面(包含敏感数据并且需要来自后端的有效 JWT),那么中间件将需要到达后端进行验证。如果它是一个可公开访问的页面,您甚至不需要打扰后端。 Nuxt(服务器端)的后端实际上不需要处理任何特定的事情,因为它无论如何都是客户端导航。至少,我看不到服务器端中间件可以在这里实现什么。
-
因为我们没有为这里的 10k 人构建所有安全页面的生成版本。作为 Facebook,我们将在该人连接时获取实际数据,因此仅在客户端。当然,公共页面可以提前生成。另外,当我在下面谈论后端时,我指的是外部后端,例如 Rails、PHP 或 Node.js。当然,你可以使用你的 Nuxt 应用程序作为代理,但 JWT 不应该在同一个 repo 中处理,而是在完全不同的东西上处理。 TDLR:
forget Nuxt backend, think regular non-nuxt backend这里。 -
抱歉 @kissu 删除了我的 EDIT,但我认为创建一个新问题更合适,因为这与我最初在这里创建的问题不同。
标签: javascript vue.js security nuxt.js nuxt-auth