我有这样的超链接:
<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超级链接,所以只有正确的密码才会打开一个新的目标窗口,错误的密码会让它什么都不做?
答案 0 :(得分:11)
Clientside JavaScript可能是提供“安全性”的最糟糕方式。用户只需查看源代码即可查看所有密码,或者只是完全禁用JavaScript。 不要这样做。
答案 1 :(得分:7)
其他人已使用true / false返回值回答了您的问题,但这是在客户端上使用javascript检查密码的整个想法的一些问题:
任何下载页面的人都可以自由阅读您的javascript源代码 - 从而向他们展示查看页面所需的密码。
如果他们没有启用javascript,那么他们只会直接进入该页面而不会收到javascript提示。
他们可以随时复制链接并将其粘贴到地址栏中以绕过密码保护。他们也可以只是中间点击链接(应该在新的标签/窗口中打开它,具体取决于他们的浏览器。)
即使在私有/内联网应用程序上,这也是一种可笑的安全方法。 :)请考虑重新设计它以便在服务器端部分检查密码(就像有人试图访问servlet时它会呈现密码框然后将该密码发回服务器然后允许/拒绝访问。)
答案 2 :(得分:1)
您可以尝试返回false
而不是"false"
但是,你可能最好在服务器上做这种事情,因为我会对所有人进行图像处理,但新手用户会知道如何“复制链接地址”并将其粘贴到地址栏中。
答案 3 :(得分:0)
为什么要返回“false”而不是 false ?