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 자신으로 설정할 수 없었습니까?

누군가 백본과 파이어베이스로 세션을 수행하는 적절한 방법을 알고 있습니까?

답변

1

클라이언트 측의 보안을 근본적으로 보장 할 수있는 방법이 없습니다. 똑똑한 해커는 항상 GUI에서 설정 한 모든 제한 사항 (예 : @logged를 true로 설정)을 피할 수 있습니다.

인증되지 않은 사용자가 예상치 못한 데이터를 변경할 수 없도록 Firebase 측에 보안 규칙을 설정해야합니다. 이렇게하면 해커가 GUI를 망칠지라도 실제로는 액세스 할 수 없거나 변경할 수없는 것입니다.

여기에는 Firebase 인증 및 보안 규칙에 대한 개요가 나와 있습니다. https://www.firebase.com/docs/security-quickstart.html