2013-10-24 7 views
5

Ich habe derzeit Probleme mit Benutzern (oder Bots, nicht sicher) besuchen nicht vorhandene Links, die drei Perioden in einem Unterverzeichnis haben.Perioden in URL verursacht ColdFusion-Fehler

Zum Beispiel, wenn jemand geht an:

http://www.example.com/.../test/index.cfm?

Dann erhalte ich die folgende Fehlermeldung:

String index out of range: -1 null 
The error occurred on line -1. 

ich es mit nur 1 Zeitraum getestet und nur 2 Perioden und es geht direkt zu einem 404 Fehler. Jeder Link, der 3 oder mehr Punkte hat, verursacht diesen Fehler.

Meine Frage ist, was kann ich tun, um dies zu verhindern? Meine Gedanken sind, sie an eine 404-Fehlerseite zu senden oder sie umzuleiten. Wie könnte ich das tun?

Ich verwende ColdFusion 8.0.1 auf Microsoft-IIS/7.0.

Bearbeiten von Miguel-F

Ich habe dieses Problem mit Coldfusion 9.0.1 auf IIS 7.5 dupliziert und bemerkte, dass es auch während der PCI-Scans.

Fehler:

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

Wo zeigt sich dieser Fehler? Geht es um ein Plugin oder einen Browser oder direkt von CF? –

+0

Ich habe festgestellt, dass ich den gleichen Fehler mit ColdFusion 9.0.1 und IIS 7.5 bekomme. –

+0

Gleiches hier auf CF 9.02 + IIS 7.5. CF 10 auf dem eingebauten Server hat dieses Problem. Railo wirft auch einen Fehler. http://stackoverflow.com/questions/19594577/periods-in-url-cause-rail-error –

Antwort

0

Da Sie auf IIS sind, würde ich denken, dass Sie IIS URL rewrite verwenden könnte abzufangen und eine HTTP 400 (bad request) Error zu senden.

Das wird es fangen, bevor es zu Coldfusion kommt.

+0

Ich habe eine URL-Rewrite-Regel erstellt, hatte aber kein Glück damit. Hier ist ein Screenshot von dem, was ich eingerichtet habe: http://i.imgur.com/ZXjMzTy.png – ethanh

Verwandte Themen