Возможна ли уязвимость XSS в веб-приложении на стороне клиента?

Я новичок в концепциях безопасности. У меня есть программа, написанная на javascript, поэтому ее можно запустить только в браузере. Мне было интересно, есть ли способ внедрить код javascript в эту программу? Моя программа выглядит так:

индекс.html:

<form method = "get" action = "file.html">
    Enter your name: <input name = "name" type = "text"> <input type = "submit" value = "enter">
</form>

файл.html:

<head>
    <script src = "js/main.js"></script>
</head>
<body>
    <div id = "contents">
    </div>
</body>

js/main.js:

function get_parameters() {
    // 1. get the string of the get parameters after question mark
    var parameters = window.location.search.substr(1);
    
    // 2. make an array of parameters
    parameters = parameters.split('&')
    
    // 3. retrieve parameters
    var res = {}
    parameters.forEach(function (item) {
        var tmp = item.split('=');
        res[tmp[0]] = decodeURIComponent(tmp[1]);
    })
    
    // 4. return parameters
    return res;
    
}

window.onload = function () { 
    var parameters = get_parameters(); 
    if ('name' in parameters) {
        document.getElementById('contents').innerHTML = '<div> Hello ' + parameters['name'] + '</div>';
    }    
};

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
191
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Скрипты могут быть вставлены через URL. Если вы посетите file.html?name=%3Cimg%20onerror%3Dalert(1)%20src%3D/%3E, вы должны увидеть предупреждение.

Свойство innerHTML используется для настройки HTML, содержащего содержимое, контролируемое пользователем. Если вместо этого вы используете innerText, это будет невозможно. Например:

document.getElementById('contents').innerText = 'Hello ' + parameters['name'];

Другие вопросы по теме