Является ли уязвимость XSS назначением JavaScript переменных с ненадежными данными на стороне клиента? - PullRequest
0 голосов
/ 31 января 2020

Я хочу кое-что прояснить относительно JavaScript назначения переменных и уязвимостей XSS. Если назначение происходит на стороне клиента, а не на стороне сервера, открыто ли оно для уязвимостей XSS? Например, что-то вроде этого:

//www.test.com/index.html?q=malcious-javascript;
<script>
var x = window.location.search.substr(1);
</script>

Является ли назначение ненадежных данных проблемой безопасности на этом этапе? Отмечая, что это не назначение на стороне сервера.

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

Если мое понимание выше неверно и это уязвимость XSS, кто-то может предоставить ответ с фактическим вектором атаки XSS, чтобы я мог сам лучше понять, как он выполняется.

1 Ответ

1 голос
/ 31 января 2020

Это только XSS, когда он визуализируется непосредственно в HTML без какой-либо очистки.

Например, установка пользовательского ввода как внутреннего HTML или визуализация пользовательского ввода непосредственно в атрибуте элемента.

Примеры вещей, которые вы не должны делать с вашим x:

element.innerHTML = x;

otherElement.innerHTML = '<div><button type="' + x '">Click me</button></div>';

eval(x); // Just avoid eval overall.

Что вы можете делать с вашим x:

element.innerText = x;

otherElement.dataset.url = x;

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