Использование EncodeURIComponent и DecodeURIComponent для предотвращения атак между сценариями работает, если я поставлю точку останова - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь предотвратить кросс-скриптовую атаку, как в этом примере

https://localhost:8089/myweb/Logon/Index?ReturnUrl=javascript:{alert(%27xss%27);}

Ниже приведен мой метод входа в систему.Я использую encodeURIComponent для кодирования входной строки и использую decodeURIComponent после успешного возврата.(ReturnUrl =% 2Administration в допустимом сценарии)

Этот код работает, если я установил точку останова в инструментах разработчика Chrome и прошел по коду.(Он работает, продолжая входить в систему и переводить меня на страницу индекса, не выполняя окно оповещения.)

Но если я запусту его без открытия инструментов dev, оно выполнит предупреждающее сообщение JavaScript и застрянет в бесконечном цикле сортировкивещи.Также иногда ReturnUrl может быть неопределенным или ничего.Это все равно должно привести к странице индекса по умолчанию.encodeURIComponent с неопределенной строкой приведет меня к странице с ошибкой.

Я искал и просмотрел все сообщения на соответствующие темы.Я все еще застрял.Я надеюсь, что это объяснило мою проблему ясно.Если вы хотите помочь, и моя проблема не ясна, пожалуйста, спросите.TIA

LogIn(
  userNameVal,
  passwordVal,
  encodeURIComponent($("#returnUrl").val()),
  function(data) {
    if (data.Success) {
      form.submitted = false;
      window.location.href = decodeURIComponent(data.ReturnUrl);
    } else {
      $("body").removeClass("manualLoading");
      $loginErrors.hide();
      $loginErrors.html(data.Message);
      $loginErrors.fadeIn('fast');
    }
  },
  function() {
    $("body").removeClass("manualLoading");
    $loginErrors.html("An error occured.");
    $loginErrors.fadeIn('fast');
  }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...