以角度模拟xss

问题描述 投票:0回答:1

我正在尝试以角度模拟非常简单的xss,但我不能,它有什么不起作用的原因吗?
TS

showOutput() {
  let badOutput = document.getElementById('bad-output');
  const badInput = document.getElementById('bad-input') as HTMLInputElement;
  if (badOutput && badInput) {
    badOutput.innerHTML = badInput.value;
  }
}

HTML

<input type="text" id="bad-input" name="bad-input" />
<button id="show-output" (click)="showOutput()">Show output</button>
<br />
<p id="bad-output"></p>

输入

<script>alert('xss')</alert>
angular typescript xss
1个回答
0
投票

首先你的结束标签有一个错误;你写了

</alert>
,而它应该是
</script>
。但即使你改变了这一点,什么也不会发生。您可以在 MDN 上找到它不起作用的原因:

虽然这可能看起来像跨站点脚本攻击,但结果是无害的。 HTML 指定不应执行插入
<script>

innerHTML
标签。

您还可以找到另一个将执行恶意脚本的示例:

<img src='x' onerror='alert(1)'>

如果您在示例中尝试该输入,您会发现它实际上会发出警报。

您可以在此处

根据您的代码示例在此 StackBlitz 中进行测试

© www.soinside.com 2019 - 2024. All rights reserved.