ColdFusion CF9与CF10中的HTMLEditFormat功能有区别吗?

时间:2014-05-29 19:09:41

标签: coldfusion escaping coldfusion-9 coldfusion-10

我发现HTMLEditFormat在CF9和CF10中的工作方式有所不同。

HTMLEditFormat(">")
  • 在CF9中:显示为“& gt;” (没有区别)
  • 在CF10中:显示为“& amp; gt;” (双重逃脱,这对我来说似乎是正确的)

我查看了CF10 notes并查看了HTMLEditFormat documentation,但未发现任何提及此功能的工作方式存在差异。有没有人知道有什么区别,或者知道文件证明没有区别? ...或者知道可能导致其工作不同的任何其他设置(ColdFusion或Web服务器)?

(这个问题不重复,因为我没有询问encodeForHTML。我明白这是理想的解决方案,但我要理解为什么HTMLEditFormat在CF9与CF10之间可能会有所不同。)

1 个答案:

答案 0 :(得分:3)

我无法想象为什么这个功能会有不同的表现。特别是当计划将其弃用到CF 10时。您是否在CFINPUT标签内调用它?

<cfinput id="foo" value="#htmlEditFormat(someValue)#" />

如果是这样,在CF6 - CF9中,该标签会自动对值使用HTMLEditFormat()。调用HTMLEditFormat()的第二个实例不会影响输出。但CF 10+更新了标记以在值上使用encodeForHTML()。如果您也输入HTMLEditFormat(),那么您将对输出进行双重编码。

为了更好的安全性,您应该停止使用HTMLEditFormat()并开始使用encodeForHTML()(如果可用)(CF10 +)。从ColdFusion 11开始,HTMLEditFormat()已被正式弃用,ColdFusion 12将完全删除该函数。

HTMLEditFormat()仅对4个字符进行编码:<, >, &, "

encodeForHTML()几乎编码每个字符,包括UTF-8字符。更新的&#34; encodeFor&#34;函数是上下文的,所以你必须选择正确的上下文(html,htmlattribute,js,css,xml等)。