Firebase:为安全起见创建匿名用户是否是最佳实践,即使应用程序不会以其他方式对用户信息做任何事情?
Firebase: is it a best practice to create anonymous users for security, even if app doesn't otherwise do anything with user info?
我有一个 public 网络应用程序,它没有 users/authentication 的应用程序逻辑需求,但它确实依赖于 Firebase 后端功能,例如云功能和 Firestore。
鉴于此,创建匿名用户仍然是最佳做法吗?我很难看到好处。如果我创建匿名用户,我可以限制他们的调用,但这似乎很容易绕过,我宁愿不限制普通用户,同时仍然为邪恶的人敞开大门。
在确实需要用户、注册、付款等的应用程序中,我通常以 if (context.auth && context.auth.user.isSubscribed) { // run app logic }
之类的东西开始功能,没有它感觉有点赤裸裸——但我会很高兴如果不是安全失误,请跳过它。
我的底线担心是如果我拥有一个真正的 public 云功能会突然发生大量成本,但也许这是没有根据的。
使用匿名身份验证将数据与用户持久关联,而无需了解有关该用户的任何可识别信息。所以一个典型的例子是允许用户在登录之前将东西放入购物车。使用匿名身份验证允许您将购物车与用户相关联并安全访问它,而无需用户输入凭据。
如果您不需要将数据与用户相关联,通常没有理由让他们匿名登录。
只是让用户匿名登录(与 semi-popular 的信念相反)不是安全措施。正如您已经说过的:任何人都可以调用 API 进行登录,因此仅要求某些人登录并不能阻止太多滥用行为。
然而,在您的 context.auth.user.isSubscribed
示例中,用户还需要有一个 isSubscribed
声明。这种声明通常只能由有权访问您的项目管理凭据的人设置,因此这种检查 是 一种有用的安全措施。而且其实就是我开头说的,一个你执着想要和用户产生关联的数据。
我有一个 public 网络应用程序,它没有 users/authentication 的应用程序逻辑需求,但它确实依赖于 Firebase 后端功能,例如云功能和 Firestore。
鉴于此,创建匿名用户仍然是最佳做法吗?我很难看到好处。如果我创建匿名用户,我可以限制他们的调用,但这似乎很容易绕过,我宁愿不限制普通用户,同时仍然为邪恶的人敞开大门。
在确实需要用户、注册、付款等的应用程序中,我通常以 if (context.auth && context.auth.user.isSubscribed) { // run app logic }
之类的东西开始功能,没有它感觉有点赤裸裸——但我会很高兴如果不是安全失误,请跳过它。
我的底线担心是如果我拥有一个真正的 public 云功能会突然发生大量成本,但也许这是没有根据的。
使用匿名身份验证将数据与用户持久关联,而无需了解有关该用户的任何可识别信息。所以一个典型的例子是允许用户在登录之前将东西放入购物车。使用匿名身份验证允许您将购物车与用户相关联并安全访问它,而无需用户输入凭据。
如果您不需要将数据与用户相关联,通常没有理由让他们匿名登录。
只是让用户匿名登录(与 semi-popular 的信念相反)不是安全措施。正如您已经说过的:任何人都可以调用 API 进行登录,因此仅要求某些人登录并不能阻止太多滥用行为。
然而,在您的 context.auth.user.isSubscribed
示例中,用户还需要有一个 isSubscribed
声明。这种声明通常只能由有权访问您的项目管理凭据的人设置,因此这种检查 是 一种有用的安全措施。而且其实就是我开头说的,一个你执着想要和用户产生关联的数据。