[英]Disable Meteor Router.routes on browser console for unauthenticated user
我正在使用Iron Iron的Meteor應用程序上工作。 我們的應用程序中有一個登錄頁面。 即使用戶未登錄,如果我以未經身份驗證的用戶身份在開發人員控制台上調用以下代碼:
Router.routes
它給出了所有路線和相應的路徑。 有沒有辦法禁用對這些路徑的訪問,或者我需要在服務器代碼中推送這些端點?
您在客戶端上定義的所有內容在客戶端上都是可見的。 所有的路由定義和路由邏輯也是如此。 在生產代碼中,這將被混淆,但仍然存在。
如果您擔心客戶可以閱讀您的路線,那么您應該更加關注它與您有關的事實。 聽起來有些混亂,但要點是:您應該仔細檢查通過發布發布到客戶端或通過服務器上的方法進行操作/創建的每個數據。 如果您的后端功能強大且盡可能地安全(永遠不可能達到100%),那么您就不必在乎客戶端是否可以看到存在哪些路由並可以訪問它們。
一個例子:
如果鮑勃不是/admin
,則鮑勃找到了/admin
路由,並禁用了路由器的觸發器來重定向他。
現在Bob可以看到管理員可以看到的所有數據。 為防止這種情況,您可以在publication
簽入Bob的角色“ admin”,如果他不是admin,則不要發布給他。
Ada也通過這種方式進入了“管理”面板,並希望創建一個新用戶。 由於用於創建新用戶的服務器方法是ValidatedMedthod
,它可以檢查Ava是否具有“管理員”角色,因此,由於Ava不是管理員,因此將無法創建新用戶。
結論:
阻止客戶端訪問只是UI Magic bot根本不安全。 簡單的調整,但是在服務器端將幫助您更好地睡眠。
更多幫助:
入門的好方法是閱讀《流星安全指南》:
https://guide.meteor.com/security.html
最后還有一個安全檢查表,出於完整性和SEO的原因,我在這里引用:
- 確保您的應用程序沒有不安全或自動發布的軟件包。
- 驗證所有方法和發布參數,並包括audit-argument-checks以自動檢查它。
- 拒絕寫入用戶文檔上的配置文件字段。
- 使用方法代替客戶端插入/更新/刪除和允許/拒絕。
- 在出版物中使用特定的選擇器和過濾器字段。
- 除非您真的知道自己在做什么,否則不要在Blaze中使用原始HTML包含。
- 確保您的源代碼中沒有秘密的API密鑰和密碼。
- 保護數據而不是UI的安全-從客戶端路由重定向離開對安全性無濟於事,它只是一個不錯的UX功能。
- 永遠不要信任從客戶端傳遞來的用戶ID。 在方法和出版物中使用this.userId。
- 設置瀏覽器策略,但是知道並非所有瀏覽器都支持它,因此它為使用現代瀏覽器的用戶提供了額外的安全保護。
答案中提到的有用軟件包:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.