我对使用googles firebase构建的网站的安全性有疑问。目前,这是一个非常简单的网站,注册/登录表格和登录的可能性。当用户登录时,他被重定向到另一页:
firebase.auth().onAuthStateChanged(firebaseUser => {
if(firebaseUser){
window.location = 'home.html';
} else {
console.log('not logged in');
}
});
现在任何人都可以看到js文件,你可以告诉用户在没有帐户的情况下将被重定向到哪里,所以有人可以在最后用/home.html
键入网站地址以绕过登录表格。所以在home.html
我添加了一个脚本,它会将未登录的用户重定向回主页面:
if(!firebaseUser){
window.location = 'index.html';
}
现在工作正常,用户进入页面但是如果他没有登录则几乎立即被重定向。但我想到了一种情况,我会在我的网页上有一些私人信息,我不希望任何人否则能够登录。然而,如果有人在浏览器设置中禁用javascript并使用home.html
键入地址,则他可以访问该页面而不会被重定向。
问题
那种情况有解决方案吗?以某种方式检查用户是否已登录并在他获得网站文件访问权限之前重定向他?
答案 0 :(得分:1)
您无法强制执行此客户端。任何人都可以导航到登录页面。您必须在后端或安全规则上强制执行它。例如,假设登录页面显示用户的信息,您将通过Firebase安全规则(如果您使用的是实时数据库或Firestore等)或通过将用户的ID令牌发送到您的服务器来强制执行此操作(如果您是使用您自己的后端数据库)并在返回要显示的内容之前对其进行验证。如果有人未登录,他们将收到您捕获的错误并重定向回登录页面。
另一种选择,如果您想使用会话cookie和您自己的数据库,请尝试使用Firebase Auth的session cookie management solution。