Để đáp ứng mọi yêu cầu với cookie chứa ký tự không phải ASCII, ColdFusion 11 có vẻ như bị lỗi. IIS 8.5 trả về lỗi máy chủ nội bộ HTTP 500 (trang trắng trống).ColdFusion 11 - 500 Lỗi Máy chủ Nội bộ từ Ký tự Cookie Không phải ASCII
bước để tái sản xuất:
Run sau trong bảng điều khiển Javascript và cố gắng để tải bất kỳ trang CFML:
document.cookie="a=ñ";
(Tùy chọn) Yêu cầu bất kỳ .html hoặc file .txt và nhận bình thường phản ứng.
Yêu cầu bất kỳ ColdFusion trang nào và nhận được trang trắng trống, Lỗi máy chủ nội bộ HTTP 500.
Cách giải quyết duy nhất là xóa cookie của trình duyệt.
Môi trường:
- Windows Server 2012 R2 Standard
- IIS 8,5
- Cold Fusion 11 (Tiêu chuẩn)
- Tất cả các hệ điều hành và phần mềm đang chạy phiên bản vá mới nhất.
Tôi đã thử thêm -Dfile.encoding=UTF-8
vào đối số Java.
Tôi chưa tìm thấy ai khác đang gặp sự cố này trên ColdFusion. Có similar issues chạy mã Java trên Tomcat. Tuy nhiên kể từ khi Coldfusion 11 được đóng gói với Tomcat, tôi thậm chí không biết phiên bản Tomcat đang chạy là gì và cách nâng cấp nó. (Có vẻ như ColdFusion 10 chạy Tomcat 7) Adobe dường như không có tài liệu về lớp Tomcat của ColdFusion 11 (cụ thể cách nó liên quan đến ColdFusion). Tôi đã thử áp dụng cấu hình <CookieProcessor />
cho context.xml như được đề xuất trên bài đăng khác đó. Tôi đã đăng lên số Adobe bug base và không nhận được phản hồi.
Mọi ý tưởng đều được chào đón. Rất tiếc, chúng tôi có rất nhiều người dùng có "Español" trong cookie và chúng tôi không thể thực thi bất kỳ mã ColdFusion nào để xóa hoặc thay đổi điều này. Chúng tôi không có vấn đề này trong ColdFusion 9 và bỏ lỡ này trong một tấm séc bảo đảm chất lượng sau khi nâng cấp lên ColdFusion 11.
Full ngoại lệ từ 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)
xin báo cáo đến https: //bugbase.adobe .com/ – Henry
Cookie không phải ASCII có hợp lệ không? Tôi chỉ nghĩ rằng các ký tự US-ASCII không bao gồm các ký tự CTL, khoảng trắng, DQUOTE, dấu phẩy, dấu chấm phẩy và dấu gạch chéo ngược là hợp lệ. http://stackoverflow.com/a/1969339/693068 Bạn có thể viết một quy tắc IIS để xác định nó và khử trùng không? Các tính năng OWASP của CF có thể bắt được nó không? –
Tôi đã phá vỡ TryCF.com cho bản thân mình cố gắng để kiểm tra này. Sau khi chạy document.cookie = "a = ñ"; không có mẫu mã nào sẽ chạy. Nếu bạn sử dụng CFCookie thay vào đó, giá trị cookie được mã hóa một cách an toàn dưới dạng "% C3% B1". –