2015-10-22 5 views
8

से आंतरिक सर्वर त्रुटि गैर-ASCII वर्ण वाली कुकी के साथ किसी भी अनुरोध के जवाब में, कोल्डफ्यूजन 11 क्रैश होने लगता है। आईआईएस 8.5 एक HTTP 500 आंतरिक सर्वर त्रुटि (खाली सफेद पृष्ठ) देता है।कोल्डफ्यूजन 11 - 500 गैर-ASCII कुकी कैरेक्टर

कदम पुन: पेश करने:

  1. भागो Javascript कंसोल में निम्नलिखित और किसी भी CFML पेज लोड करने का प्रयास: document.cookie="a=ñ";

  2. (वैकल्पिक) अनुरोध किसी भी .html या .txt फ़ाइल और सामान्य प्राप्त प्रतिक्रिया।

  3. किसी भी कोल्डफ्यूजन को किसी पृष्ठ का अनुरोध करें और एक खाली सफेद पृष्ठ, HTTP 500 आंतरिक सर्वर त्रुटि प्राप्त करें।

  4. ब्राउज़र कुकीज़ को साफ़ करना एकमात्र कामकाज है।

पर्यावरण:

  • विंडोज सर्वर 2012 R2 मानक
  • IIS 8.5
  • शीत संलयन 11 (मानक)
  • सभी ओएस और सॉफ्टवेयर नवीनतम समझौता संस्करण चला रहे।

मैंने जावा तर्कों में -Dfile.encoding=UTF-8 जोड़ने का प्रयास किया है।

मुझे इस मुद्दे में कोल्डफ्यूजन पर कोई और नहीं मिला है। similar issues टॉमकैट पर जावा कोड चल रहे हैं। हालांकि, कोल्डफ्यूजन 11 को टॉमकैट के साथ बंडल किया गया है, इसलिए मुझे यह भी नहीं पता कि टॉमकैट का कौन सा संस्करण चल रहा है और न ही इसे अपग्रेड करना है। (ऐसा लगता है कि कोल्डफ्यूजन 10 टॉमकैट 7 चलाता है) एडोब में कोल्डफ्यूजन 11 की टोमकैट परत (विशेष रूप से यह कोल्डफ्यूजन से कैसे संबंधित है) के बारे में प्रलेखन प्रतीत नहीं होता है। मैंने उस अन्य पोस्ट पर सुझाए गए अनुसार <CookieProcessor /> कॉन्फ़िगरेशन context.xml को कॉन्फ़िगर करने का प्रयास किया है। मैंने Adobe bug base पर पोस्ट किया है और मुझे कोई प्रतिक्रिया नहीं मिली है।

किसी भी विचार का स्वागत है। दुर्भाग्यवश हमारे पास कुकी में "Español" वाले बहुत से उपयोगकर्ता हैं, और हम इसे साफ़ करने या बदलने के लिए किसी भी कोल्डफ्यूजन कोड को निष्पादित नहीं कर सकते हैं। हम ColdFusion 9 में इस समस्या नहीं था और ColdFusion के उन्नयन के बाद एक गुणवत्ता आश्वासन की जांच में यह याद 11.

coldfusion-error.log से पूर्ण अपवाद:

Sep 03, 2015 11:43:58 PM org.apache.coyote.ajp.AjpProcessor process 
SEVERE: Error processing request 
java.lang.IllegalArgumentException: Control character in cookie value or attribute. 
    at org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:193) 
    at org.apache.tomcat.util.http.Cookies.getTokenEndPosition(Cookies.java:502) 
    at org.apache.tomcat.util.http.Cookies.processCookieHeader(Cookies.java:349) 
    at org.apache.tomcat.util.http.Cookies.processCookies(Cookies.java:168) 
    at org.apache.tomcat.util.http.Cookies.getCookieCount(Cookies.java:106) 
    at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:986) 
    at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:743) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:417) 
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:199) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
+2

कृपया रिपोर्ट::

<action type="CustomResponse" statusCode="403" statusReason="Forbidden: Invalid non-ASCII cookie" statusDescription="Only US-ASCII characters excluding CTLs, whitespace, DQUOTE, comma, semicolon, and backslash are allowed in a cookie." /> 

यहाँ कुकी (/clearCookie.htm) को हटाने के लिए कुछ नमूना कोड //bugbase.adobe .com/ – Henry

+0

गैर-ASCII कुकीज़ मान्य हैं? मैंने सोचा कि सीटीएल, व्हाइटस्पेस, डकोट, कॉमा, अर्धविराम और बैकस्लैश वर्णों को छोड़कर केवल यूएस-एएससीआईआई पात्र मान्य थे। http://stackoverflow.com/a/1969339/693068 क्या आप इसे पहचानने और इसे स्वच्छ करने के लिए आईआईएस नियम लिखने में सक्षम हैं? क्या सीएफ की ओडब्ल्यूएएसपी विशेषताएं इसे पकड़ सकती हैं? –

+0

मैंने परीक्षण करने की कोशिश कर रहे प्रयास के लिए TryCF.com तोड़ दिया। Document.cookie = "a = ñ" चलाने के बाद; कोई कोड नमूने नहीं चलेंगे। यदि आप इसके बजाय CFCookie का उपयोग करते हैं, तो कुकी मान सुरक्षित रूप से "% C3% B1" के रूप में एन्कोड किया जाता है। –

उत्तर

3

आप का उपयोग गैर- ASCII कुकीज़ की पहचान कर सकता है एक आईआईएस पुनर्लेख नियम और फिर उपयोगकर्ता को एक स्थिर HTML पृष्ठ पर रीडायरेक्ट करें और कुकी को हटाएं या फिर से लिखें। (मैंने सीएफ 10 का उपयोग करके इसका परीक्षण किया और यह काम करता है।)

यह गैर-ASCII कुकी कोल्डफ्यूजन 10/11 को मारता है। (नोट: ColdFusion केवल ऊपरी मामलों कुकी नाम उपयोग कर सकते हैं।)

document.cookie="a=ñ"; 

अपने आईआईएस web.config फ़ाइल को यह जोड़ें।

<rule name="Route Bad Cookie" enabled="true" stopProcessing="true"> 
    <match url="^(.*)" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{PATH_INFO}" pattern=".*htm$" negate="true" />   
     <add input="{HTTP_COOKIE}" pattern="([^\x00-\x7F]+)" /> 
    </conditions> 
    <action type="Redirect" url="/clearCookie.htm" redirectType="Temporary"/> 
</rule> 

नोट: ऊपर शासन (सिवाय ".htm" फ़ाइलें किसी भी स्क्रिप्ट से मेल खाता है मामले में आप पहले से ही छिपाने के लिए आईआईएस पुनर्लेखन का उपयोग कर रहे हैं।अपने URL में CFM।)

<match url="*.cfm*" /> 

आप सुरक्षा के प्रति जागरूक कर रहे हैं, तो आप एक abort साथ rewrite कार्रवाई की जगह सकता है।

<action type="AbortRequest" /> 

या एक कस्टम प्रतिक्रिया https:

<script> 
var mydate = new Date(); 
mydate.setTime(mydate.getTime() - 1); 
document.cookie = "a=; expires=" + mydate.toGMTString(); 
</script>