簡體   English   中英

帶有 target=_blank 的密碼保護超鏈接

[英]Password protected hyper link with target=_blank

我有一個像這樣的超鏈接:

<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 超鏈接,以便只有正確的密碼才能打開一個新的目標窗口,一個錯誤的密碼會使其無所作為嗎?

客戶端 JavaScript 可能是提供“安全性”的最糟糕的方式。 用戶可以查看源代碼來查看您的所有密碼,或者完全禁用 JavaScript。 不要這樣做。

其他人已經用 true/false 返回值回答了您的問題,但這里是在客戶端上的 javascript 中檢查密碼的整個想法的一些問題:

  1. 任何下載頁面的人都可以自由讀取您的 javascript 源代碼 - 從而向他們顯示查看頁面所需的密碼。

  2. 如果他們沒有啟用 javascript,那么他們將直接進入頁面而不會收到 javascript 提示。

  3. 他們總是可以復制鏈接並將其粘貼到他們的地址欄中以繞過密碼保護。 他們也可以只用中鍵單擊鏈接(根據瀏覽器的不同,應該在新選項卡/窗口中打開它。)

即使在私有/僅限內部網的應用程序上,這也是一種可笑的安全方法。 :) 請考慮重新設計它,以便在服務器端部分檢查密碼(例如,當有人嘗試訪問 servlet 時,它會呈現一個密碼框,然后將該密碼發送回服務器,然后允許/拒絕訪問.)

您可能會嘗試返回false而不是"false"

但是,您最好在服務器上執行此類操作,因為我認為除了新手用戶之外的所有人都知道如何“復制鏈接地址”並將其粘貼到他們的地址欄中。

為什么你返回"false"而不是false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM