密码保护超链接与target = _blank

时间:2008-10-30 17:00:01

标签: javascript html

我有这样的超链接:

<A Href=My_Java_Servlet?User_Action=Admin_Download_Records&User_Id=Admin onClick=\"Check_Password();\" target=_blank>Download Records</A>

当用户点击它时,将打开一个密码窗口,用户可以尝试3次输入正确的密码。

Javascript看起来像这样:

<Script Language="JavaScript">
  function Check_Password()
  {
    var testV=1;
    var pass1=prompt('Password','');
    while (testV<3)
    {
      if (!pass1) history.go(-1);
      if (pass1=="password") { return true; }
      testV+=1;
      var pass1=prompt('Access Denied - Password Incorrect.','');
    }
    return "false";
  }
</Script>

如果用户输入错误的密码3次,它应该不会做任何事情,但它仍会打开一个新窗口并显示受保护的信息,如何修复javascript或我的html超级链接,所以只有正确的密码才会打开一个新的目标窗口,错误的密码会让它什么都不做?

4 个答案:

答案 0 :(得分:11)

Clientside JavaScript可能是提供“安全性”的最糟糕方式。用户只需查看源代码即可查看所有密码,或者只是完全禁用JavaScript。 不要这样做。

答案 1 :(得分:7)

其他人已使用true / false返回值回答了您的问题,但这是在客户端上使用javascript检查密码的整个想法的一些问题:

  1. 任何下载页面的人都可以自由阅读您的javascript源代码 - 从而向他们展示查看页面所需的密码。

  2. 如果他们没有启用javascript,那么他们只会直接进入该页面而不会收到javascript提示。

  3. 他们可以随时复制链接并将其粘贴到地址栏中以绕过密码保护。他们也可以只是中间点击链接(应该在新的标签/窗口中打开它,具体取决于他们的浏览器。)

  4. 即使在私有/内联网应用程序上,这也是一种可笑的安全方法。 :)请考虑重新设计它以便在服务器端部分检查密码(就像有人试图访问servlet时它会呈现密码框然后将该密码发回服务器然后允许/拒绝访问。)

答案 2 :(得分:1)

您可以尝试返回false而不是"false"

但是,你可能最好在服务器上做这种事情,因为我会对所有人进行图像处理,但新手用户会知道如何“复制链接地址”并将其粘贴到地址栏中。

答案 3 :(得分:0)

为什么要返回“false”而不是 false