XSS-Attack:设置输入值时是否可以执行JS?

时间:2016-08-22 08:01:57

标签: javascript xss

我目前正在针对XSS测试我的应用程序,并想知道以下示例是否可以被利用。

以下是我的操作:我从服务器获得未转义的响应,并将其直接设置为输入值。

我知道我应该在服务器上逃脱,但我很好奇是否可以利用它。

我已经到目前为止产生语法错误,但无法执行脚本......

document.getElementById('test').value = '"/><script>alert(1);</script>';
<input id="test" type="text"/>

虽然alert(1);实际执行了吗?

,您能否更改此示例?

感谢您的帮助。我很好奇:-)

2 个答案:

答案 0 :(得分:1)

将任何内容分配给输入的值不会使其执行。只有像onerror,onmouseover,onfocus等事件处理程序的赋值才能执行。

我猜测语法错误是因为</script>会破坏您的脚本标记,因此您会留下无效的javascript。与我在此描述的完全相似:http://erlend.oftedal.no/blog/?blogid=91

答案 1 :(得分:-1)

我不同意艾伦在这里。通过将值分配给输入元素,我可以设法执行脚本。

var group_name = "<script>alert(1);<\/script>"
$(document).ready(function() {
  if (group_name) {
    $('#name').val(group_name);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input-field">
  <input id="name" type="text" class="validate" required="" aria-required="true" />
  <label for="name" data-error="cannot be blank">Name *</label></div>
</div>