2013-10-24 16 views
5

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) 
+1

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? –

+0

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. –

+0

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 –

Trả lời

0

Vì bạn đang sử IIS, tôi sẽ nghĩ rằng bạn có thể sử dụng IIS URL rewrite để đánh chặn và gửi một HTTP 400 (bad request) Error.

Điều đó sẽ bắt được trước khi nó được chuyển đến Coldfusion.

+0

Tôi đã tạo quy tắc ghi đè URL nhưng không có may mắn với quy tắc đó. Đây là một màn hình lấy những gì tôi đã thiết lập: http://i.imgur.com/ZXjMzTy.png – ethanh

Các vấn đề liên quan