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

问题描述 投票:0回答:5

我有一个静态网站,我想用用户名和/或密码来保护它,就像 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>
javascript html security
5个回答
2
投票

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

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

使用一些 JavaScript 向用户请求密码,并使用此密码来解密所交付页面中已有的一些加密字符串,并用解密的数据替换

body
的内容。应该有一些库可用于使用 JavaScript 加密/解密数据。


0
投票

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


0
投票

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


0
投票

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

但是,如果您确实关心安全性,而不是仅仅让大多数用户面临挑战,那么在后端执行安全性是一个更好的选择。


0
投票

我认为从技术上讲,为了安全起见,你可以在没有服务器的情况下逃脱。概念验证思想实验...如果页面的整个 HTML 内容可读但已加密,并且用户必须在弹出窗口中输入解密密钥,那么理论上客户端 JavaScript 可以解密页面内容,无法规避。

唯一的问题是每个用户的密码都是相同的,除非你可以采取一些巧妙的措施..

© www.soinside.com 2019 - 2024. All rights reserved.