Tôi hiện đang gặp sự cố với người dùng (hoặc bot, không chắc chắn) truy cập các liên kết không tồn tại có ba giai đoạn trong thư mục con.Khoảng thời gian trong URL gây lỗi ColdFusion
Ví dụ, nếu ai đó đi vào:
http://www.example.com/.../test/index.cfm?
Sau đó, tôi nhận được lỗi sau:
String index out of range: -1 null
The error occurred on line -1.
Tôi đã thử nghiệm nó với chỉ 1 thời gian và chỉ cần làm 2 giai đoạn và nó đi thẳng tới lỗi 404. Bất kỳ liên kết nào mặc dù có từ 3 dấu chấm trở lên sẽ gây ra lỗi này.
Câu hỏi của tôi là tôi có thể làm gì để ngăn điều này xảy ra? Suy nghĩ của tôi là gửi chúng đến trang lỗi 404 hoặc chuyển hướng chúng. Làm thế nào tôi có thể làm điều đó?
Tôi đang chạy ColdFusion 8.0.1 trên Microsoft-IIS/7.0.
Chỉnh sửa từ Miguel-F
Tôi đã nhân đôi vấn đề này với ColdFusion 9.0.1 trên IIS 7.5 và cũng nhận thấy nó trong quá trình quét PCI.
Lỗi:
java.lang.StringIndexOutOfBoundsException
stacktrace:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at
java.lang.AbstractStringBuilder.delete(Unknown Source) at
java.lang.StringBuffer.delete(Unknown Source) at
coldfusion.util.Utils.collapseDotDots(Utils.java:647) at
coldfusion.util.Utils.canonicalizeURI(Utils.java:601) at
coldfusion.filter.PathFilter.invoke(PathFilter.java:43) at
coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) at
coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at
coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at
coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at
coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at
coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at
coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at
coldfusion.CfmServlet.service(CfmServlet.java:201) at
coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at
jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at
coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at
coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at
jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at
jrun.servlet.FilterChain.service(FilterChain.java:101) at
jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at
jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
Lỗi này hiển thị ở đâu? Nó là cái gì đó từ một plugin hoặc trình duyệt hoặc trực tiếp từ CF? –
Tôi đã nhận thấy rằng tôi nhận được cùng một lỗi bằng cách sử dụng ColdFusion 9.0.1 và IIS 7.5. –
Tương tự ở đây trên CF 9.02 + IIS 7.5. CF 10 trên máy chủ tích hợp có vấn đề này. Railo cũng ném một lỗi. http://stackoverflow.com/questions/19594577/periods-in-url-cause-railo-error –