目前我正在使用firebase和backbone.marionette构建应用程序,我正在尝试实现安全会话。以前,我可以通过在URL栏中键入特定路由来绕过登录页面,但为了解决这个问题,我在应用程序中添加了一个初始化程序,以检查用户是否登录,如下所示:
@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
吗?
有没有人知道与backbone和firebase进行会话的正确方法?
答案 0 :(得分:1)
基本上没有办法保证客户端的安全性。聪明的黑客可以随时解决您在GUI上的任何限制(例如将@logged设置为true)。
相反,您需要在Firebase端设置安全规则,以便未经过身份验证的用户无法更改他们不应该使用的数据。这样,即使黑客对您的GUI感到困惑,他们实际上也无法访问或更改他们不应该做的任何事情。
此处概述了Firebase身份验证和安全规则: https://www.firebase.com/docs/security-quickstart.html