我发现HTMLEditFormat在CF9和CF10中的工作方式有所不同。
HTMLEditFormat(">")
我查看了CF10 notes并查看了HTMLEditFormat documentation,但未发现任何提及此功能的工作方式存在差异。有没有人知道有什么区别,或者知道文件证明没有区别? ...或者知道可能导致其工作不同的任何其他设置(ColdFusion或Web服务器)?
(这个问题不重复,因为我没有询问encodeForHTML
。我明白这是理想的解决方案,但我要理解为什么HTMLEditFormat
在CF9与CF10之间可能会有所不同。)
答案 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等)。