【问题标题】:Why does this Javascript alert fire?为什么这个 Javascript 警报会触发?
【发布时间】:2015-02-15 20:24:21
【问题描述】:

我一直在研究防止 XSS 攻击,因此在将值呈现回客户端时对其进行编码。这工作正常,但是当该值被放入 .NET runat 服务器输入并在客户端上呈现如下时,警报会触发,即使 javascript 已被编码。

<input name="ctl00$body$buildTitle" type="text" value="&amp;lt;script&amp;gt;alert(&amp;#39;Hola&amp;#39;)&amp;lt;/script&amp;gt;" />

谁能解释一下原因?

【问题讨论】:

  • 如果我在本地渲染它不会触发我 - 另外,我认为放置在 input 中的脚本不会被浏览器执行? (转义与否)
  • 是的,我在 JsFiddle 上尝试过并注意到同样的事情,尽管这肯定发生在我的网站上,而且这是源中包含的唯一警报
  • 要么在代码发送到浏览器之前进行了转换,要么您在某个地方还没有找到另一个警报。
  • 必须有一些代码(客户端或服务器端)实际读取您输入的值,然后通过document.write.appendChild() 在html 文档中呈现它,通过Response.Write 或设置服务器端的Text 属性,或其他方法。从alert("Hola"); 更改为debugger; 并刷新。这将允许您使用浏览器的调试器检查堆栈跟踪。

标签: javascript asp.net xss


【解决方案1】:

因为您在客户端浏览器上渲染了一个脚本块。 无论您将脚本块放在哪里,浏览器都会运行脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2020-08-26
    • 1970-01-01
    相关资源
    最近更新 更多