0

目前,我正在使用Firebase和backbone.marionette構建應用程序,並且正在嘗試實施安全會話。以前,我可以通過在URL欄中輸入特定的路線來繞過登錄頁面,但爲了解決這個問題,我在應用程序中添加了一個初始化程序以檢查用戶是否已登錄,如下所示:Firebase&Backbone:應用程序身份驗證

@addInitializer((options) => 
     # Instantiate firebase 
     @firebase = new Firebase("https://*******.firebaseIO.com/") 

     @authClient = new FirebaseAuthClient @firebase, 
      (error, user) => 
       if (error) 
        console.log(error) 
       else if (user) 
        console.log('User ID: ' + user.id + ', Provider: ' + user.provider) 
        @logged = true 
        @trigger('logged_in') 
        @router.navigate('home', {trigger: true}) 
       else 
        @logged = false 
        @trigger('logged_out') 
        @router.navigate('login', {trigger: true}) 

    ) 

現在我在routes.coffee中呈現一個頁面之前,我檢查@logged是否爲真。

但我覺得這是粗略的安全充其量。難道有人只是啓動控制檯,並將其標誌設置爲true本身?

有誰知道正確的方式來與主幹和Firebase進行會話嗎?

回答

1

基本上沒有辦法保證客戶端的安全。一個聰明的黑客總是可以繞過你放在GUI上的任何限制(例如將@logged設置爲true)。

相反,您需要在Firebase端設置安全規則,以便未經身份驗證的用戶無法更改他們不應該設置的數據。這樣,即使黑客使用GUI弄虛作假,他們實際上也無法訪問或改變他們不應該做的任何事情。

這裏有一個Firebase身份驗證和安全規則的概述: https://www.firebase.com/docs/security-quickstart.html