【问题标题】:Password protect html page密码保护html页面
【发布时间】:2011-06-30 22:37:33
【问题描述】:

我需要在任意 html 文件上添加一些简单的密码保护。它确实需要安全,但只需将随机的 roff-raff 排除在外。我尝试使用以下 JS:

var password; 
    var thePassword="secretpassword"; 
    password=prompt('Enter Password',' '); 
    if (password==thePassword) { alert('Correct Password! Click OK to Enter!'); }
    else { window.location="http://www.google.com/"; } 

这在 Firefox 中运行良好,但在 IE 中似乎提示功能失败,所以我们总是重定向到 google...

关于如何使用直接的 HTML 页面进行简单的密码保护有什么建议吗?

编辑:需要明确的是,它在 Firefox 中运行良好,而在 IE 中甚至不会提示要求“输入密码”的弹出窗口

【问题讨论】:

  • 该代码在 IE9 上对我来说似乎运行良好。我只是在这个 jsfiddle 中运行它并且它可以工作:jsfiddle.net/jfriend00/KkMRS。你运行的是什么版本的IE?我建议对提示返回的实际值发出警报。

标签: javascript html authentication password-protection


【解决方案1】:

在 IE 中对我来说很好用。演示:http://jsfiddle.net/U2n3P/

它可能无法正常工作的一个可能原因是您使用' ' 填充了一个空格,因此当您开始输入时,末尾可能会有一个空格。将提示更改为:

password=prompt('Enter Password', ''); 

仅供参考,我知道你说过你不需要这个超级安全,但你不妨添加一些安全性。获取一个 MD5 库,然后执行以下操作:

var thePassword = "md5encodedpassword";
password=prompt('Enter Password',' ');
if(md5(password) != thePassword){

【讨论】:

  • 我的 if 语句是正确的。我告诉过你它在 Firefox 中运行良好。不过我会研究一下 MD5 建议!
  • 因为它忽略了发布的代码在IE中不起作用的声明。 IE 忽略 JS 弹出窗口。如果 IE 会忽略它,我不能正确地使用这样的弹出窗口作为密码。
  • 你是什么意思 IE 忽略 JS 弹出窗口?!? prompt 在 IE 中运行良好。
【解决方案2】:

将安全页面或目录命名为 md5 哈希密码。

function isThere(url) {
    var req= new AJ(); // XMLHttpRequest object
    try {
        req.open("HEAD", url, false);
        req.send(null);     
        return req.status== 200 ? true : false;
    }
    catch (er) {
        return false;
    }
}
password=prompt('Enter Password',' '); 
password=md5(password);
if (isThere(md5 + "/") { window.location = password + "/"; }
else { alert("incorrect"); }

【讨论】:

  • 请评论您为什么投反对票,到目前为止,这是唯一允许您在不泄露受保护密码或页面的情况下保护页面的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 2011-06-21
  • 2017-02-03
  • 1970-01-01
  • 2021-02-10
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多