我正在使用ASP.Net 4.0和MVC 2.我正在收到可能已经或可能不是Html编码的用户内容。我读过有趣的http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx,但我需要的是确保内容编码而不进行双重编码的方法。我无法控制输入过程。
E.g。
用户输入:
& < < > >
如果编码输出:
&amp; &lt; < > &gt;
无法正确显示
如果未编码则输出:
& < < > >
这将无法正确验证
答案 0 :(得分:2)
您可以首先解码用户输入,然后重新编码结果。 这样,如果输入的某些值已经被编码,它们将被解码,并且您将能够对所有内容进行编码。
& < < > >
- &GT;解码输入,你得到:
& < < > >
- &GT;重新编码一切,你得到:
& < < > >
答案 1 :(得分:1)
如果是我,我只会替换<
和>
个字符,而其他所有字符都保持不变。
答案 2 :(得分:0)
我认为您不会找到一个解决方案,该解决方案对于编码的内容都是自动生效的 - 我可以看到可靠地执行此操作的唯一方法是指定内容是否已编码。否则,在某些情况下会遇到问题,例如
Some plain text mentioning > being the syntax for >
和
<p>Some HTML mentioning that &amp; is the syntax for ></p>
您可以尝试检测是否存在编码内容或HTML内容,但上面的示例显示这并不总是绝对可靠。