我们最近接管了一个.NET项目,在查看db之后,我们在一些列中有以下内容:
1)有些列的值如
" & etc etc
2)有些人拥有<script>
个标签和其他非HTML编码标签
此数据显示在整个网站上。在点号1上尝试HtmlEncoding时,我们得到以下" -> &quot;
显然我们想要显示htmlencode,因为第2点包含我们不想执行的javascript。
有没有办法在可能已编码或未编码的值上使用HtmlEncoded?
答案 0 :(得分:2)
有没有办法在可能已编码或未编码的值上使用HtmlEncoded?
没有。
我建议您编写一个快速脚本,通过数据库和取消编码已编码的数据。然后使用像Microsoft AntiXSS库(教程here)之类的东西来编码输出到网页之前的所有输出。请记住,存储未编码的数据 1 是很好的,当你将它回传给最终用户时会有危险。
某些控件已使用内置于.Net框架中的编码功能对输出进行编码 - 对XSS 无法防范 - 您只需要避免使用这些控件或者不对它们显示的数据进行编码。有一个与MS控件有关的FAQ问题,在页面底部编码您应阅读的第一个链接。此外,一些第三方控制供应商对其控件的输出进行编码,如果您对它们进行测试以确保它们仍然不易受XSS影响,您可以自己帮忙。
1 不要忘记采取措施防止 SQL注入了!
答案 1 :(得分:1)
在应用 HtmlEncode (“myText”)之前,请使用 HtmlDecode 方法输入文字。
这样你就可以解码你的字符串:
&安培; QUOT; &安培;放大器;等等&lt;脚本&GT;
到
“&amp; etc etc&lt; script&gt;
然后从头开始应用编码。