Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么会触发此Javascript警报?_Javascript_Asp.net_Xss - Fatal编程技术网

为什么会触发此Javascript警报?

为什么会触发此Javascript警报?,javascript,asp.net,xss,Javascript,Asp.net,Xss,我一直在研究如何防止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

我一直在研究如何防止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;" />


有人能解释一下原因吗?

因为您在客户端浏览器上呈现了一个脚本块。
无论您将脚本块放置在何处,浏览器都会运行脚本。

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