假設客戶端在索引頁面上打開您的nuxt.js網站。從那里,他們進行身份驗證(您為此使用了@nuxtjs/auth-next)。然后他們移動到只有經過身份驗證的用戶才能看到的安全頁面。此安全頁面是“pages”檔案夾中的 .vue 檔案,擴展名為middleware: ["auth"].
現在,這個頁面真的安全嗎? 我的意思是,惡意用戶不能在未經身份驗證的情況下修改頁面并訪問它嗎?因為這個場景中的“安全”只在客戶端實作,對嗎?
那么,僅向經過身份驗證的用戶顯示復雜頁面的最佳方式是什么?
我知道在頁面上顯示安全資料的一種方法是使用asyncData安全后端 API訪問它。但是,當頁面很復雜并且頁面上的所有內容都必須安全時,這不是最佳選擇。在這種情況下,最好的選擇是什么?
uj5u.com熱心網友回復:
您的應用程式最終是一個 SPA,如果您想通過安全檢查繞過中間件,您可以禁用頁面上的 JS。但是,由于沒有直接生成任何內容,您將看不到任何內容,因為它不在此處(作為靜態檔案)。
如果您的應用程式是同構的(基本上有一個ssr: true),auth 模塊仍將禁用對這些頁面的訪問(您可以仔細檢查)。
最后,在以下情況下會收到關鍵資訊:
- 您確實有一個有效的 JWT 令牌(登錄后)
- 您向后端提交 HTTP 查詢
- 后端確認并且令牌有效
- 后端通過 HTTP 回應為您提供敏感資訊
最后,您的客戶端代碼不需要是安全的。如果有人以某種方式破解了您的客戶端狀態并到達了敏感頁面,他仍然沒有有效的 JWT 令牌,因為驗證仍然發生在后端。
只有在向后端發送正確的憑據并讓后端驗證這些憑據時才能生成的憑據。
uj5u.com熱心網友回復:
現在,這個頁面真的安全嗎?
如果客戶端提供了有效的訪問令牌,則從請求中提供受保護的內容。受保護的內容是在運行時提供的。
因為這個場景中的“安全”只在客戶端實作,對嗎?
安全性不僅在客戶端實作。前提是:訪問令牌已通過身份驗證服務器安全地獲得。如果這聽起來不清楚,我建議閱讀有關身份驗證流程的更多資訊。Auth0 有一些關于不同流程的很好的檔案。 https://auth0.com/docs/authorization/flows
那么,僅向經過身份驗證的用戶顯示復雜頁面的最佳方式是什么?
內容是在運行時提供的。服務器端或客戶端。這里有一些 Nuxt 的設定指南。這是我從串列中找到的第一個 (Auth0)。 https://auth.nuxtjs.org/providers/auth0
我不知道這些指南是如何更新的,但身份驗證服務提供商往往會自己更新指南。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357709.html
標籤:javascript Vue.js 安全 nuxt.js nuxt-auth
上一篇:我必須實作https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-10到SpringbootREST端點
