【发布时间】:2015-02-15 20:24:21
【问题描述】:
我一直在研究防止 XSS 攻击,因此在将值呈现回客户端时对其进行编码。这工作正常,但是当该值被放入 .NET runat 服务器输入并在客户端上呈现如下时,警报会触发,即使 javascript 已被编码。
<input name="ctl00$body$buildTitle" type="text" value="&lt;script&gt;alert(&#39;Hola&#39;)&lt;/script&gt;" />
谁能解释一下原因?
【问题讨论】:
-
如果我在本地渲染它不会触发我 - 另外,我认为放置在
input中的脚本不会被浏览器执行? (转义与否) -
是的,我在 JsFiddle 上尝试过并注意到同样的事情,尽管这肯定发生在我的网站上,而且这是源中包含的唯一警报
-
要么在代码发送到浏览器之前进行了转换,要么您在某个地方还没有找到另一个警报。
-
必须有一些代码(客户端或服务器端)实际读取您输入的值,然后通过
document.write或.appendChild()在html 文档中呈现它,通过Response.Write或设置服务器端的Text属性,或其他方法。从alert("Hola");更改为debugger;并刷新。这将允许您使用浏览器的调试器检查堆栈跟踪。
标签: javascript asp.net xss