如何解密包含特殊ColdFusion字符的值?
我正在使用ColdFusion进行加密和解密。我有一个值为1的活动变量。我想创建一个包含active Directory的加密值的URL,如:如何解密包含特殊ColdFusion字符的值?,coldfusion,coldfusion-8,Coldfusion,Coldfusion 8,我正在使用ColdFusion进行加密和解密。我有一个值为1的活动变量。我想创建一个包含active Directory的加密值的URL,如: http://localhost:8500/blueline/ActivateRegistration.cfm?email=abc@gmail.com&active=!# 这里是#是加密值1 在另一端ie ActivateRegistration.cfm,我需要使用相同的私钥解密活动,并找到原始值。但我在尝试以下代码时未获得正确的加密字符串:
http://localhost:8500/blueline/ActivateRegistration.cfm?email=abc@gmail.com&active=!#
这里是#
是加密值1
在另一端ie ActivateRegistration.cfm,我需要使用相同的私钥解密活动
,并找到原始值。但我在尝试以下代码时未获得正确的加密字符串:
<cfset activeValue = url.active>
原因是加密值还包含字符串中的特殊字符#
。有人能帮忙吗?另外,如何处理ColdFusion特殊字符/关键字?
<cfparam name="url.active" default="">
<cfoutput>
<a href="#cgi.script_name#?active=#urlEncodedFormat('!##')#">This String Contains CFML Values</a>
#urlDecode(url.active)#
</cfoutput>
#urlDecode(url.active)#
你需要做几件事
#
字符替换为#
,以将其转义为ColdFusion李>
#urlDecode(url.active)#
你需要做几件事
#
字符替换为#
,以将其转义为ColdFusion李>
正如Leigh所提到的,我想看看你是如何生成这个加密文本来更好地帮助你的。其他人已经讨论了如何转义URL值中出现的URL有意义的字符,但还有最后一个难题需要澄清/更正 加密字符串没有问题,因为#是ColdFusion的一个特殊字符,因为它在URL本身有特殊的含义。在URL中,#是服务器上文档地址与文档中目标特定片段(即书签/锚定标记)之间的分隔符。由于此信息被视为与服务器无关,浏览器从不发送它,因此服务器永远不会获取它 这类似于如果你有一个参数值,它本身有一个嵌入的符号(&):就URL而言,这是参数之间的分隔符,而不是参数值的一部分,因此CF不会将其视为URL变量值的一部分,它会将其视为两个变量之间的分隔符
为了避免所有这些混淆,正如其他受访者所说,您需要始终对需要在URL上输入的值进行URL编码,这些值包含的字符是有意义的。其他人已经介绍了如何转义URL值中出现的有意义的字符,但还有最后一个难题需要澄清/更正 加密字符串没有问题,因为#是ColdFusion的一个特殊字符,因为它在URL本身有特殊的含义。在URL中,#是服务器上文档地址与文档中目标特定片段(即书签/锚定标记)之间的分隔符。由于此信息被视为与服务器无关,浏览器从不发送它,因此服务器永远不会获取它 这类似于如果你有一个参数值,它本身有一个嵌入的符号(&):就URL而言,这是参数之间的分隔符,而不是参数值的一部分,因此CF不会将其视为URL变量值的一部分,它会将其视为两个变量之间的分隔符
为了避免所有这些混淆,正如其他受访者所说,您需要始终对URL上需要包含以下字符的值进行URL编码。您使用的是哪种算法和编码?在不了解更多信息的情况下,我建议返回base64中的加密值。另外,请确保输入url参数。如果这没有帮助,你能发布一个重现问题的例子吗?你使用的是哪种算法和编码?在不了解更多信息的情况下,我建议返回base64中的加密值。另外,请确保输入url参数。如果这没有帮助,你能发布一个重现问题的例子吗?我想我们需要更多的信息。因为它们不必在
encrypt
的动态结果中转义磅符号。仅当它们硬编码到.cfm页面时。此外,URL
变量会自动解码。所以你可以跳过urlDecode
。我想我们需要更多信息。因为它们不必在encrypt
的动态结果中转义磅符号。仅当它们硬编码到.cfm页面时。此外,URL
变量会自动解码。所以你可以跳过urlDecode
.Duh,我对url编码太着迷了,没有解释原因。很好的解释。这是正确的答案+1.Duh,我是如此沉迷于url编码,我没有费心解释为什么。很好的解释。这是正确的答案+1。