Защищенная паролем гиперссылка с target = _blank - PullRequest
0 голосов
/ 30 октября 2008

У меня есть гиперссылка, подобная этой:

<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 ]

11 голосов
/ 30 октября 2008

Клиентский JavaScript является, пожалуй, худшим из возможных способов обеспечения «безопасности». Пользователи могут просто просмотреть источник, чтобы увидеть все ваши пароли, или просто отключить JavaScript. Не делай этого.

7 голосов
/ 30 октября 2008

Другие люди ответили на ваш вопрос возвращаемым значением true / false, но вот некоторые из проблем, связанных с идеей проверки пароля в javascript на клиенте:

  1. Ваш источник javascript доступен для чтения любому, кто загружает страницу - таким образом, показывая им пароль, необходимый для просмотра страницы.

  2. Если у них не включен javascript, они просто перейдут на страницу, не получая подсказку javascript.

  3. Они всегда могут просто скопировать ссылку и вставить ее в адресную строку, чтобы обойти защиту паролем. Они также могут просто щелкнуть средней кнопкой мыши по ссылке (которая должна открываться в новой вкладке / окне в зависимости от их браузера).

Даже для частного / интранет-приложения это будет смешной метод защиты. :) Пожалуйста, подумайте над тем, чтобы изменить его, чтобы пароль проверялся на стороне сервера (например, когда кто-то пытается получить доступ к сервлету, он отображает поле пароля, а затем отправляет этот пароль обратно на сервер и затем разрешает / запрещает доступ). .)

1 голос
/ 30 октября 2008

Вы можете попытаться вернуть false вместо "false"

Однако, возможно, вам лучше делать такие вещи на сервере, поскольку я представляю, что все, кроме начинающих пользователей, будут знать, как «скопировать адрес ссылки» и вставить его в свою адресную строку.

0 голосов
/ 30 октября 2008

Почему вы возвращаете "ложь" вместо ложь ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...