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

XSS-Attack: Is it possible to execute JS when input value is set?

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

我是这样做的:我从服务器获得未转义的响应并将其直接设置为输入值。

我知道我应该在服务器上逃逸,但很好奇这是否会被利用。

我已经走到这一步产生语法错误,但无法执行脚本...

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

虽然 alert(1); 实际执行了,但您可以更改此示例吗?

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

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

我猜语法错误是因为 </script> 破坏了你的脚本标签,因此你留下了无效的 javascript。与我在这里描述的非常相似:http://erlend.oftedal.no/blog/?blogid=91

我不同意 Erlend 的观点。我可以通过将值分配给输入元素来设法执行脚本。

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>