如何解密包含特殊ColdFusion字符的值?

Sam*_*hra 0 coldfusion coldfusion-8

我正在使用ColdFusion进行加密和解密.我有一个值为1的变量active.我想创建一个包含active的加密值的URL,如:

http://localhost:8500/blueline/ActivateRegistration.cfm?email=abc@gmail.com&active=!#
Run Code Online (Sandbox Code Playgroud)

!#是加密值1.

在另一端即ActivateRegistration.cfm我需要active用相同的私钥解密并找到原始值.但是当我尝试以下代码时,我没有得到正确的加密字符串:

<cfset activeValue = url.active>
Run Code Online (Sandbox Code Playgroud)

原因是加密值还包含#字符串中的特殊字符.有人可以帮忙吗?另外我如何处理ColdFusion特殊字符/关键字?

Ada*_*ron 5

其他人已经介绍了如何逃避URL值中出现的URL有意义的字符,但是最后一个难题是澄清/纠正.

你没有加密字符串的问题,因为#是ColdFusion的一个特殊字符,因为它在URL本身具有特殊含义.在URL中,#是服务器上文档的地址与文档中目标的特定片段(即:书签/锚标签)之间的分隔符.由于此信息被认为与服务器无关,因此浏览器从不发送它,因此服务器永远不会获取它.

它类似于你有一个参数值,它本身有一个嵌入的&符号(&):就URL而言,这是参数之间的分隔符,而不是参数值的一部分,因此CF不会将其视为值的一部分如果是URL变量,它会将其视为两个变量之间的分隔符.

为避免这种混淆,正如其他受访者所说,您需要始终对需要在URL上进行URL编码,这些URL包含对URL寻址模式本身有意义的字符.