0

BlueDragon.NET 上的 ColdFusion 出现了一个奇怪的问题。由于 StackOverflow 用户的广泛经验而在这里提问。

发布到 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

>

也就是说,任何以开头<和结尾的>内容都将被剥离或过滤,并且在发布时不再出现在 ColdFusion 的FORM范围内。

我们的 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 上运行,也许有一些清理设置正在以某种方式用于所有变量?

欢迎就这个问题提出建议、想法等。

4

2 回答 2

2

我没有方便检查的 BD.NET 实例,但 Adob​​e ColdFusion 在 cf 管理员中有一个设置,可以去除“无效标签”。这是我最好的猜测。Adobe CF 将它们替换为“invalidTag”,我的猜测是 BD.Net 只是默默地剥离它。

于 2010-11-17T01:39:47.300 回答
0

事实证明这很平凡。

我们有一个自定义标签,可以进行自定义字符串替换。在一台服务器上,它被修改为不替换所有标签。在这台服务器上,我们使用的是旧版本。所以问题不是 BlueDragon JX 和 BlueDragon.NET 之间的区别——而是开发团队的错误。

于 2010-11-18T21:51:49.970 回答