0

BlueDragon.NETのColdFusionで奇妙な問題が発生しています。StackOverflowユーザーの幅広い経験のためにここで質問します。

BlueDragon.NETサーバーにPOSTされたコンテンツ内のタグが削除され、スタックのどこで削除されるかはわかりません。たとえば、このデータを投稿すると

[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インスタンスを確認するのに便利なものはありませんが、AdobeColdFusionにはcf管理者に「無効なタグ」を削除する設定があります。それが私の一番の推測です。AdobeCFはそれらを「invalidTag」に置き換えます。BD.Netはそれをサイレントに削除するだけだと思います。

于 2010-11-17T01:39:47.300 に答える
0

それは非常に平凡であることが判明しました。

カスタマイズされた文字列置換を行うカスタムタグがありました。1つのサーバーで、すべてのタグを置き換えないように変更されました。このサーバーでは、以前のバージョンを使用していました。したがって、障害はBlueDragon JXとBlueDragon.NETの違いではなく、開発者チームのエラーでした。

于 2010-11-18T21:51:49.970 に答える