Своеобразная ошибка с ColdFusion на BlueDragon.NET - PullRequest
0 голосов
/ 17 ноября 2010

У нас возникла странная проблема с ColdFusion в BlueDragon.NET. Запрашиваемая здесь из-за большого опыта пользователей StackOverflow.

Теги внутри POSTed-контента для вывода BlueDragon.NET сервер удаляется, и мы не уверены, где в стеке он удаляется. Так, например, если мы публикуем эти данные

[CORE]
Lesson_Status=Incomplete
Lesson_Location=comm_13_a02_bs_enus_t17s06v01
score=
time=00:00:56
[Core_Lesson]
<sd ac="" pc="7.0" at="1289834380459" ct="" ><t id="lo8" sc=";;" st="c" /></sd>
<sd ac='' pc='7.0' at='1289834380459' ct='' ><t id='lo8' sc=';;' st='c' /></sd>
<sd ac="" pc="7.0" at="1289834380459" ct="" ><t id="lo8" sc=";;" st="c" /></sd>
<sd ac="" pc="7.0" at="1289834380459" ct="" ><t id="lo8" sc=";;" st="c" /></sd>
<b>hello1</b>
<i>hello2</i>
<table border><td>hello3</td></table>
<sd>hello4</sd>
<sd ac="1">hello5</sd>
<t>hello6</t>
<t />
<t attr="hello8" />
<strong>hello10</strong>
<img>
><>

Что мы получаем, так это:

[CORE]
Lesson_Status=Incomplete
Lesson_Location=comm_13_a02_bs_enus_t17s06v01
score=
time=00:00:56
[Core_Lesson]



hello1
hello2
hello3
hello4
hello5
hello6


hello10

>

То есть все, что начинается с < и заканчивается >, удаляется или фильтруется и больше не появляется в области действия FORM ColdFusion при публикации.

Наш сервер с BlueDragon JX не страдает этой проблемой.

Если мы пропустим использование области действия FORM по умолчанию и используем этот код, появится содержимое, похожее на тег:

<cfscript>
    // get the content string of the raw HTTP headers, will include all POST content as a long querystring
    RAWREQUEST = GetHttpRequestData();
    // split the string on "&" character, each variable should now be separate
    // note that at this point duplicate variables will get clobbered
    RAWFORMFIELDS = ListToArray(RAWREQUEST.content, "&");
    // We're creating a structure like "FORM", but better
    BetterFORM = StructNew();
    // Go over each of the raw form fields, take the key
    // and add it as a key, and decode the value into the value field
    // and trap the whole thing if for some reason garbage gets in there
    for(i=1;i LTE ArrayLen(RAWFORMFIELDS);i = i + 1) {
        temp = ListToArray(RAWFORMFIELDS[i], "=");
        try {
            tempkey = temp[1];
            tempval = URLDecode(temp[2]);                 
            StructInsert(BetterFORM, tempkey, tempval);
        } catch(Any e) {
            tempThisError = "Malformed Data: " & RAWFORMFIELDS[i];
            // Log the value of tempThisError here?         
            // WriteOutput(tempThisError);
        }
    }
</cfscript>
<cfdump var="#BetterFORM#">

Если мы сделаем это и будем использовать созданную переменную BetterFORM, она есть, так что, похоже, нет проблем с фильтрацией запросов в какой-то другой точке стека. Я думал, может быть, это был URLScan, но, похоже, не установлен. Поскольку BD.NET работает на .NET в качестве движка, возможно, есть какой-то параметр очистки, который каким-то образом используется для всех переменных?

Приветствуются предложения, идеи и т. Д.

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

У меня нет экземпляра BD.NET, который можно было бы проверить, но в Adobe ColdFusion есть настройка администратора cf для удаления «недопустимых тегов».Это мое лучшее предположение.Adobe CF заменяет их на «invalidTag», я думаю, что BD.Net просто удаляет его молча.

0 голосов
/ 19 ноября 2010

Оказалось очень обыденным.

У нас был пользовательский тег, который выполнял пользовательские замены строк. На одном сервере он был изменен, чтобы НЕ заменять все теги. На этом сервере мы использовали более старую версию. Так что ошибка не была разницей между BlueDragon JX и BlueDragon.NET - это была ошибка команды разработчиков.

...