【问题标题】:Is this way of protecting my website secure enough? How could I make the protection of my site be server-sided? [duplicate]这种保护我的网站的方式是否足够安全?我怎样才能使我的网站的保护是服务器端的? [复制]
【发布时间】:2019-11-01 04:57:43
【问题描述】:

只要有人没有登录,我想让我的网站被“锁定”。实现的登录系统使用 Google Firebase,所以我可以让用户登录变得简单而安全。

目前我编写了一个 if 语句,如果你没有登录,它会将你重定向到登录页面。我知道它很容易被绕过,因为脚本是客户端,所以我想问一下最好的方法是什么让我让这个过程更安全。我考虑过在用户登录时使用脚本将整个 html 插入页面,但这也意味着整个 html 将位于客户端脚本中,这是不好的。

auth.onAuthStateChanged(function(user) {
  if (user) {

    if(window.location.href =="login.html"){
    mail = user.email;
    window.alert("on login logged in. redirecting to index User Email: " + mail);
    window.location.replace ("index.html");

    }
  } else {
    window.alert(window.location.href);
    if(window.location.href !="login.html"){
    mail = null;
    window.alert("not on login and logged out. Redirecting to login page Email: " + mail);
    window.location.replace = "login.html";

    }
  }
});

【问题讨论】:

    标签: javascript login firebase-authentication


    【解决方案1】:

    如果您的网站托管在 Firebase 托管上,则所有文件都是公开的。没有办法阻止用户访问特定文件。见Firebase Hosting - password protect website?Can Firebase hosting restrict access to resources?

    也就是说,秘密信息通常不直接在您的 HTML 中,而是在您从服务器加载的其他资源中,例如从数据库中。如果您使用的数据库来自 Firebase(Cloud Firestore 或实时数据库),您可以使用 Firebase's server-side security rules 确保只有授权用户才能访问数据。如果您使用其他数据库或您自己的后端来提供需要保护的数据,请在您自己的后端代码中查看verifying ID tokens,以确保其授权用户访问数据。

    【讨论】:

    • 非常感谢弗兰克!您是说我应该将除我的 Login.html 之外的所有内容的 HTML 上传到数据库中,然后创建规则以将 .html 文件插入服务器以供认证用户使用吗?就我而言,整个网站都应该是“秘密信息”。
    • 您不应该将 HTML 存储在数据库中。但是您的 HTML 通常不是机密信息,而是您在该 HTML 中的机密数据。如果您从模板和数据动态生成 HTML(这是 Web 应用程序的常用方法),那么您可以按照我概述的方式保护数据访问。如果您想保护整个网站的安全,Firebase 托管不适合您,因为它不支持这一点。
    猜你喜欢
    • 1970-01-01
    • 2012-10-24
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多