Я пытаюсь предотвратить кросс-скриптовую атаку, как в этом примере
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');
}
);