有没有办法在不使用服务器端语言的情况下密码保护HTML页面?

时间:2009-01-13 13:11:07

标签: javascript html client passwords

我有一系列相互关联的网页,我想通过要求用户提供登录名和密码来限制对这些页面的访问。但是,我的托管帐户目前没有为服务器端脚本提供任何工具 - 我是否可以使用仅客户端脚本来实现此目标?

我想知道以下程序如何运作 -

http://www.myzips.com/software/HTML-Password.phtml

澄清:感谢您的投入。但是,如果我正在配置Web服务器,那么用户是否可以输入用户名和密码?

10 个答案:

答案 0 :(得分:10)

无法创建安全的客户端脚本。如果用户有权访问它,那就不安全了。

如果您的主机正在运行Apache,您可以使用.htaccess来保护文件夹,在IIS上您也可以通过目录安全性来执行此操作。

答案 1 :(得分:5)

您可以使用以下内容创建.htaccess文件:

AuthUserFile path/to/password.txt
AuthGroupFile /dev/null
AuthName "Acces Restreint"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

然后您必须创建密码文件

答案 2 :(得分:3)

可以实现这一点,尽管您可能会发现只需切换到其他托管服务提供商就更容易了。这是可能的:

首先,使用对称加密算法和随机密钥(主密钥)加密整个身体。将此密文存储在javascript块中作为文本。

对于所有用户,生成一个javascript哈希,将其用户名映射到主密钥的加密副本(使用每个用户密钥加密)。

最后,创建一个要求输入用户名和密码的网页。输入后,使用用户名找到加密的主密钥。用用户输入的密码解密,并使用生成的主密钥解锁原始主体。使用javascript将现有的html主体替换为解密的主体。

答案 3 :(得分:0)

我不了解客户端脚本,但您可以使用网络服务器来限制对您网站的访问 在IIS中,您可以使用“目录安全性”选项卡设置:configure IIS Web site authentication

答案 4 :(得分:0)

如果每个人都有一个且只有一个密码,您可以尝试使用公钥类型方法。您可以提供一个简单的脚本来执行RSA解密(您需要在可以访问某种类型的编程软件的地方进行原始加密)。然后,您可以将内容作为加密字符串提供。您将显示一个密码框,用户将键入密码,然后根据密码对字符串进行解密。如果密码正确,则字符串将正确解密,页面将显示。否则,页面看起来就像一堆垃圾。但要小心,因为这种客户端方法很容易受到暴力破解。

答案 5 :(得分:0)

当然,如果安全不是什么大问题。从本质上讲,你会打开一扇门,上面写着“如果你不知道密码,请不要进来”。任何不使用服务器端技术的东西都可能使用JavaScript,以及受保护目录中的文件来存储密码。但是,这不是密码保护。可以禁用JavaScript,这将导致页面加载。毫无疑问,这将通过隐藏内容来抵消......但内容仍然可以通过来源查看。还有其他一些方法,但如果您的内容真的值得用密码保护,这不是一个好方法。

答案 6 :(得分:0)

是的,这是可能的,但它不是很漂亮甚至非常好。

  • 您的索引页面有一个空的div,您的受限内容将会显示。
  • 在页面加载或单击链接时,提示符(window.prompt)会询问您的密码。
  • 您的密码经过哈希处理,并与脚本中正确密码的存储哈希值(或哈希数组)进行比较。
  • 如果您有匹配项,则通过AJAX将内容加载到div中
  • 您可以将密码存储在cookie中,以便每次都不会提示(不是很安全,但这不是一个非常安全的系统)。
  • 您仍然不是那么安全,因为您要加载的页面的文件名将在您的脚本中显示,但它可能会让一个非常随意的冲浪者出局。
  • 您可以对网址进行obfustrating,从而需要一些JavaScript知识才能查看。例如rot13

您需要JavaScript hashing script

答案 7 :(得分:0)

或者你可以使用一个神秘的html-filename作为密码,如果它存在的话,可以使用ajax /浏览该页面: - )

与其他建议一样安全(或不安全),但可能更容易实施。

答案 8 :(得分:0)

您不需要公钥 - 事实上,公钥解密仅限于在实践中加密其他对称密钥和证书,因为它的计算成本非常高。你只需要一个共享秘密。

使用AES(例如)使用密码派生的密钥(通过散列)加密网页。然后,您必须安全地将密码短语传达给用户,并编写一些javascript来下载加密内容,提示输入密码,解密数据并将其合并到DOM中。

它非常凌乱而且非常脆弱 - 只有一个密码供所有用户使用,一旦它受到攻击你必须更换服务器上的东西,并希望不希望谷歌没有缓存它...建议你转移到一个真正的ISP

至于你提到的HTML密码程序,没有办法知道它不是蛇油或破碎......“强大算法的最佳安全性”这句话并不完全令人鼓舞!

答案 9 :(得分:0)

以下是我自己实现的解决此问题的解决方案

这里的一些用户建议使用基于加密的方法来保护客户端密码。我也需要这个功能,所以我自己实现了它。密码使用PBKDF2进行哈希处理,然后用于使用AES256加密页面。

该工具在此处托管:

https://www.maxlaumeister.com/code/clientside-html-password/

源代码可在此处获取:

https://github.com/MaxLaumeister/clientside-html-password

项目描述,来自项目页面:

  

客户端HTML密码保护

     

此工具可让您安全地对HTML文件进行密码保护。与其他密码保护工具不同,此工具:

     
      
  1. 没有服务器端组件(此工具及其受密码保护的页面完全以javascript运行)。

  2.   
  3. 使用强加密,因此无法绕过密码保护。

  4.         

    您只需选择一个HTML文件和一个密码,您的页面就会受到密码保护。