代码之家  ›  专栏  ›  技术社区  ›  Christophe Marois

在ssr nuxt.js(或plain vue.js)中为仅验证路由保护源代码

  •  3
  • Christophe Marois  · 技术社区  · 6 年前

    我使用的是 nuxt.render 中间件来整合我的api、前端和开发环境。到目前为止,一切都很顺利,但我对我的auth设置的安全性有一些担心。

    我的后端通过nuxt中间件将其用户会话注入vuex。虽然这对于限制访问非常有效,但这些文件的源代码始终可以通过直接get方法获得。(例如,如果 /admin 受到保护, /_nuxt/admin.js 仍将可用,并将包含该页的整个源代码)。更糟的是,因为违约 preload 链接放在头由nuxt,他们将自动获取,即使没有登录。

    我知道这并没有太多的安全问题,因为我的管理api调用在服务器端强制执行auth,但有时(就像我的情况一样),公开源代码是不可取的。

    我想出了一个解决方案,效果很好,但并不十分优雅:

    1. nuxt.config.js ,我设置 render.resourceHints = false 是的。我希望不必这样做就可以从可用路由的预取中获益,但似乎没有办法限制预取路由的选择。

    2. 堵漏前 next.render 在express的中间件链中,我有选择地限制了页面的源代码。(例如) app.get('/_nuxt/pages/admin.js', restrict) ,其中 restrict 是返回 401 如果未通过身份验证,或调用 next() 如果是的话。这可以防止XHR获取和直接获取。)

    3. 我做一个习惯 error.vue 模板,我在其中捕获如果强制访问用户不应该访问的路由时nuxt将抛出的错误消息,如下所示 Loading chunk 1 failed ,并将其规范化为“禁止”错误页。

    有没有一种更务实的方法让我错过了,或者这超出了nuxt.js目前提供的范围?

    0 回复  |  直到 6 年前