2013-10-24 61 views
5

我目前遇到用戶(或機器人,不確定)訪問在子目錄中有三個句點的不存在的鏈接的問題。URL中的期間導致ColdFusion錯誤

例如,如果有人去:

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

然後我收到以下錯誤:

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

我曾經使用過1週期測試它,只是2個週期和它去直接到404錯誤。任何具有3個或更多週期的鏈接都會導致此錯誤。

我的問題是我能做些什麼來阻止這種情況發生?我的想法是將它們發送到404錯誤頁面或重定向它們。我怎麼能這樣做?

我在Microsoft-IIS/7.0上運行ColdFusion 8.0.1。米格爾-F

編輯我已經在IIS 7.5中複製這一問題的ColdFusion 9.0.1,並在PCI掃描也注意到了這一點。

錯誤:

java.lang.StringIndexOutOfBoundsException 

堆棧跟蹤:

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

此錯誤顯示在哪裏?這是從插件或瀏覽器或直接從CF? –

+0

我注意到我使用ColdFusion 9.0.1和IIS 7.5得到相同的錯誤。 –

+0

同樣在CF 9.02 + IIS 7.5上。內置服務器上的CF 10有這個問題。 Railo也會拋出一個錯誤。 http://stackoverflow.com/questions/19594577/periods-in-url-cause-railo-error –

回答

0

由於您使用的IIS,我想你可以使用IIS URL rewrite攔截和發送HTTP 400 (bad request) Error

這會在它進入Coldfusion之前捕獲它。

+0

我創建了一個URL重寫規則,但沒有運氣。這裏是我設置的屏幕截圖:http://i.imgur.com/ZXjMzTy.png – ethanh