ColdFusion CF9和CF10中的HTMLEditFormat函数有什么不同吗?

ColdFusion CF9和CF10中的HTMLEditFormat函数有什么不同吗?,coldfusion,escaping,coldfusion-9,coldfusion-10,Coldfusion,Escaping,Coldfusion 9,Coldfusion 10,我看到了HTMLEditFormat在CF9和CF10中的工作方式的不同 HTMLEditFormat(">") 在CF9中:显示为“”(无差异) 在CF10中:显示为“&;gt;”(双转义,在我看来是正确的) 我已经查看了,并回顾了,但没有发现任何关于此函数工作方式不同的内容。有没有人知道有什么不同,或者知道证明没有不同的文件。。。或者是否知道任何其他可能导致此工作方式不同的设置(ColdFusion或web服务器) (这个问题不是重复的,因为我不是在问encodeF

我看到了HTMLEditFormat在CF9和CF10中的工作方式的不同

HTMLEditFormat(">")
  • 在CF9中:显示为“”(无差异)
  • 在CF10中:显示为“&;gt;”(双转义,在我看来是正确的)
我已经查看了,并回顾了,但没有发现任何关于此函数工作方式不同的内容。有没有人知道有什么不同,或者知道证明没有不同的文件。。。或者是否知道任何其他可能导致此工作方式不同的设置(ColdFusion或web服务器)


(这个问题不是重复的,因为我不是在问
encodeForHTML
。我知道这是理想的解决方案,但我想知道为什么
HTMLEditFormat
在CF9和CF10中可能会有所不同。)

我无法想象为什么该函数的行为会有所不同。特别是当它计划在CF 10中弃用时。碰巧,您是从
CFINPUT
标记中调用它的吗

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

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

HTMLEditFormat()
仅编码4个字符:
,&,“


encodeForHTML()
对几乎所有字符进行编码,包括UTF-8字符。更新的“encodeFor”函数是上下文的,因此您必须选择正确的上下文(html、htmlattribute、js、css、xml等)。

我没有使用cfinput,我只是隔离了问题,所以我所做的基本上就是
写输出(HTMLEditFormat(escapedCharacters));
不幸的是,我们不能利用CF10的
encodeForHTML()
函数,尽管我知道这将是最好的解决方案!只是一个小问题:HTMLEditFormat()现在不推荐使用并不意味着它很快就会被删除(如在CF12中).有一大堆东西早在CF6就被弃用了,它们要么仍然存在,要么最终在CF11中被删除。是的,但CF团队已经声明CF 12将通过删除某些弃用的函数(如HTMLEditFormat())来破坏向后兼容性。很抱歉在前面将其标记为重复,我将在:bugbase.adobe.com上将其作为CF9的bug存档,但我怀疑adobe是否会费心为CF9修复任何问题。他们只会要求您升级最新的CF。您是否正在查看为验证值而生成的HTML源代码?我在ColdFusion 9上进行了测试,并且它可以按照文档进行工作;
<
=
&=
“=”
最后是
=>;
。是的,我是。澄清一下:当我说“显示为”时,我的意思是在源HTML中,而不是在呈现的网页中。感谢您尝试。我正在测试的两台服务器有相同的代码,但不是100%相同(除了CF版本),因此服务器端可能存在其他无法转义文本的内容。我只是不知道它可能是什么。因此我想我的第二个问题是真实的:“是否知道任何其他设置(ColdFusion或web服务器)可能导致此工作不同?”