Переменная CFUSION_ENCRYPT не определена - PullRequest
0 голосов
/ 28 августа 2018

0 опыта с ColdFusion здесь.

У меня за столом отвалился этот проект, написанный кем-то 4 года назад, человек больше не работает в моей компании.

Получил журналы с живого размещенного веб-сайта, и, похоже, в этой строке присутствует ошибка.

Строка 196:

<p><a href="https://#$.siteConfig().getdomain()##$.createHREF(filename='accounts/verify-email')#?stub=#cfusion_encrypt(uu.username, application.encKey)#">Click here</a> to activate your account</p>

enter image description here

Я полагаю, это может быть связано с тем, что URL-адрес существует в кавычках, а параметры передаются неправильно? Но я ни в коем случае не уверен.

У меня нет базы кода для тестирования или отладки, только развернутый сайт.

Рад получить любые предложения о том, как поступить с этим. Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Если ваш код CFML размещен как на новых серверах ColdFusion, так и на серверах ColdFusion до CF11, вам может потребоваться использовать пользовательскую функцию (UDF), чтобы заполнить этот пробел. Мы использовали следующий код при медленном тестировании и переносе старых приложений с CF7 на 2016 год. (Просто добавьте эти функции в свою кодовую базу и переименуйте существующие теги "CFusion_" в "Fusion _".)

Опубликовано 20.10.2005 Барни Буасвертом: http://www.barneyb.com/barneyblog/2005/10/28/cfusion_encryptcfusion_decrypt-udfs/

<cffunction name="fusion_encrypt" output="false" returntype="string">
    <cfargument name="string" type="string" required="true" />
    <cfargument name="key" type="string" required="true" />
    <cfset var i = "" />
    <cfset var result = "" />
    <cfset key = repeatString(key, ceiling(len(string) / len(key))) />
    <cfloop from="1" to="#len(string)#" index="i">
        <cfset result = result & rJustify(formatBaseN(binaryXOR(asc(mid(string, i, 1)), asc(mid(key, i, 1))), 16), 2) />
    </cfloop>
    <cfreturn ucase(replace(result, " ", "0", "all")) />
</cffunction>
<cffunction name="fusion_decrypt" output="false" returntype="string">
    <cfargument name="string" type="string" required="true" />
    <cfargument name="key" type="string" required="true" />
    <cfset var i = "" />
    <cfset var result = "" />
    <cfset key = repeatString(key, ceiling(len(string) / 2 / len(key))) />
    <cfloop from="2" to="#len(string)#" index="i" step="2">
        <cfset result = result & chr(binaryXOR(inputBaseN(mid(string, i - 1, 2), 16), asc(mid(key, i / 2, 1)))) />
    </cfloop>
    <cfreturn result />
</cffunction>
<cffunction name="binaryXOR" output="false" returntype="numeric">
    <cfargument name="n1" type="numeric" required="true" />
    <cfargument name="n2" type="numeric" required="true" />
    <cfset n1 = formatBaseN(n1, 2) />
    <cfset n2 = formatBaseN(n2, 2) />
    <cfreturn inputBaseN(replace(n1 + n2, 2, 0, "all"), 2) />
</cffunction>

<h2>cfusion_encrypt Test</h2>
<cfset key = "test" />
<cfoutput>
<table>
<cfloop list="barney,is,damn cool!" index="i">
    <tr>
        <td>#i#</td>
        <td>#cfusion_encrypt(i, key)#</td>
        <td>#fusion_encrypt(i, key)#</td>
        <td>#cfusion_decrypt(cfusion_encrypt(i, key), key)#</td>
        <td>#fusion_decrypt(fusion_encrypt(i, key), key)#</td>
    </tr>
</cfloop>
</table>
</cfoutput>
0 голосов
/ 28 августа 2018

Похоже, вы используете версию сервера ColdFusion, которая не имеет встроенной функции cfusion_encrypt().

Попробуйте, измените

cfusion_encrypt(uu.username, application.encKey)

до

encrypt(uu.username, application.encKey,'CFMX_COMPAT','HEX')

<ч />

Надеюсь, это поможет.

...