Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解密包含特殊ColdFusion字符的值?_Coldfusion_Coldfusion 8 - Fatal编程技术网

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

如何解密包含特殊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,我需要使用相同的私钥解密活动,并找到原始值。但我在尝试以下代码时未获得正确的加密字符串:

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

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
  • 如果您在URL中传输奇怪的字符,使用urlEncodedFormat()传输它们并使用urlDecode()或base64解码它们应该也是最安全的 正如Leigh提到的,我想看看您是如何生成这些加密文本的,以便更好地帮助您。

    
    #urlDecode(url.active)#
    
    你需要做几件事

  • 您需要将任何
    #
    字符替换为
    #
    ,以将其转义为ColdFusion
  • 如果您在URL中传输奇怪的字符,使用urlEncodedFormat()传输它们并使用urlDecode()或base64解码它们应该也是最安全的
    正如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。