如何密码保护静态网站? (没有 htaccess)

How to password protect a static website? (without htaccess)

我有一个静态网站,我想用用户名 and/or 密码保护它,就像 apache 的 htaccess 一样,但我不想托管一个 apache 服务器来让它工作。如果没有前端 javascript,我该如何实现?

我最近使用前端 JS(太不安全,因为源是可见的):

<!DOCTYPE html>
<html lang="en">
<script>
  var password = "password";
  (function promptPass() {
    var psw = prompt("Enter your Password");
    while (psw !== password) {
      alert("Incorrect Password");
      return promptPass();
    }
  }());
  alert('Correct Password\nWelcome!');
</script>

<body align="center">
  <h1>Password Protected Site</h1>
  <!-- Other page elements -->
</body>
</html>

据我所知,您至少需要一点 JS,因为 HTML 根本没有任何逻辑结构来完成您的需要。如果你真的想让它保持静态,我会使用强大的 JS 混淆器来解决它,比如 Obfuscator.io.

据我所知,进入前端的任何内容都将始终可见。因此,要用密码保护静态 html 页面,您应该用密码保护文件本身,或者您应该从重定向此页面的页面提示输入密码。

默认情况下,安全性必须在后端完成(正如其他人已经指出的那样)。

但是我想到了一件事要在前端做一些安全工作:

使用一些 JavaScript 向用户请求密码,并使用此密码解密已在交付页面中可用的一些加密字符串,并用解密后的数据替换 body 的内容。使用 JavaScript.

应该有一些库可用于 encrypting/decrypting 数据

如果我必须在这些条件下想出一些办法,我会考虑对用户名和密码进行哈希处理并将其用作服务器上文件的 url包含页面的实际内容,然后使用 JS 加载它。

但是,如果您真正关心安全性,而不只是让它对大多数用户构成挑战,那么在后端执行安全性仍然是一个更好的选择。