ColdFusion 11 - 500 Interner Serverfehler bei Nicht-ASCII-Cookie-Zeichen

8

Als Reaktion auf eine Anfrage mit einem Cookie, das ein Nicht-ASCII-Zeichen enthält, scheint ColdFusion 11 abzustürzen. IIS 8.5 gibt einen HTTP 500 Internal Server Error (leere weiße Seite) zurück.

Schritte zum Reproduzieren:

  1. Führen Sie Folgendes in der Javascript-Konsole aus und versuchen Sie, eine CFML-Seite zu laden: document.cookie="a=ñ";

  2. (Optional) Fordern Sie eine .html- oder .txt-Datei an und erhalten Sie eine normale Antwort.

  3. Fordern Sie eine ColdFusion-Seite an und erhalten Sie eine leere weiße Seite, HTTP 500 Internal Server Error.

  4. Die einzige Problemumgehung besteht darin, Browser-Cookies zu löschen.

Umgebung:

  • Windows Server 2012 R2-Standard
  • IIS 8.5
  • Cold Fusion 11 (Standard)
  • Auf allen Betriebssystemen und in der Software werden die neuesten gepatchten Versionen ausgeführt.

Ich habe versucht, -Dfile.encoding=UTF-8 zu den Java-Argumenten hinzuzufügen.

Ich habe niemanden gefunden, der bei ColdFusion auf dieses Problem gestoßen ist. Es gibt ähnliche Probleme mit Java-Code auf Tomcat. Da ColdFusion 11 jedoch mit Tomcat ausgeliefert wird, weiß ich nicht einmal, welche Version von Tomcat läuft und wie es aktualisiert wird. (Es scheint, dass ColdFusion 10 Tomcat 7 ausführt.) Adobe scheint keine Dokumentation über die Tomcat-Ebene von ColdFusion 11 zu haben (speziell, wie es sich auf ColdFusion bezieht). Ich habe versucht, die <CookieProcessor /> -Konfiguration auf context.xml anzuwenden, wie in diesem anderen Beitrag vorgeschlagen. Ich habe auf der Adobe-Fehlerdatenbank gepostet und keine Antwort erhalten.

Irgendwelche Ideen sind willkommen. Leider haben wir viele Benutzer mit "Español" in einem Cookie, und wir können keinen ColdFusion-Code ausführen, um dies zu löschen oder zu ändern. Wir hatten dieses Problem in ColdFusion 9 nicht und haben dies bei einer QA-Prüfung nach dem Upgrade auf ColdFusion 11 verpasst.

Vollständige Ausnahme von coldfusion-error.log:

%Vor%     
T Swift 22.10.2015, 19:24
quelle

1 Antwort

3

Sie können Nicht-ASCII-Cookies mithilfe einer IIS-Rewrite-Regel identifizieren und dann den Benutzer auf eine statische HTML-Seite umleiten und den Cookie löschen oder neu schreiben. (Ich habe das mit CF10 getestet und es funktioniert.)

Dieser Nicht-ASCII-Cookie beendet ColdFusion10 / 11. (HINWEIS: ColdFusion kann nur auf in Großbuchstaben angegebene Cookie-Namen zugreifen.)

%Vor%

Fügen Sie dies Ihrer IIS-Datei web.config hinzu.

%Vor%

HINWEIS: Die obige Regel entspricht jedem Skript außer ".htm" -Dateien (falls Sie bereits IIS Rewrite verwenden, um .CFM in Ihren URLs zu verbergen.)

%Vor%

Wenn Sie sicherheitsbewusst sind, können Sie die Aktion rewrite durch abort ersetzen.

%Vor%

oder eine benutzerdefinierte Antwort:

%Vor%

Hier ist ein Beispielcode zum Löschen des Cookies (/clearCookie.htm):

%Vor%     
James Moberg 22.10.2015 23:15
quelle