Я новичок в концепциях безопасности. У меня есть программа, написанная на 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>';
}
};
Скрипты могут быть вставлены через URL. Если вы посетите file.html?name=%3Cimg%20onerror%3Dalert(1)%20src%3D/%3E
, вы должны увидеть предупреждение.
Свойство innerHTML
используется для настройки HTML, содержащего содержимое, контролируемое пользователем. Если вместо этого вы используете innerText
, это будет невозможно. Например:
document.getElementById('contents').innerText = 'Hello ' + parameters['name'];