关于Tomcat如何处理Open Redirect的问题
Thursday, 18 February, 2016 5:03 PM
最近處理security issue的時候,遇到一個問題。由于對tomcat的機制不是很熟悉,所以沒啥頭緒。
問題如下
https://jerry-storefront-ui-test-v1.us-east.cf.yaas.io///example.com/a 這個URL會redirect到example.com/a/ (請拷貝https://jerry-storefront-ui-test-v1.us-east.cf.yaas.io///example.com/a,而不是直接點擊)
https://jerry-agenthome-ui-test-v1.us-east.cf.yaas.io///example.com/a/ 這個URL就會報資源沒法找到(請拷貝https://jerry-agenthome-ui-test-v1.us-east.cf.yaas.io///example.com/a/,而不是直接點擊)
兩個差不多的URL,但是得到不同的處理。我猜想應該是使用的tomcat版本不同或者tomcat的配置不同。但是我不知道用什么方法去驗證這個猜想。
為什么第一個請求會先返回303 error,然后再去取一次,于是遇到404 error,而第二個請求沒有重定向,直接404 not found error?
我以前在ABAP里處理過類似的重定向問題,因為SAP的netweaver也能作為web server用,所以在ABAP里要實現來一個url,動態決定其response code,比如200還是303,404 都是可以通過配置或者寫代碼來實現的:
http://scn.sap.com/docs/DOC-53666
但是這個case,https://jerry-storefront-ui-test-v1.us-east.cf.yaas.io這個url到底是run在什么server上的。Tomcat?
我在https://tomcat.apache.org/里看到了status code 303對應定義的constant SC_SEE_OTHER.
如果url是Tomcat的servlet 服務的話,據我所知這些status code只可能是Servlet實現里set進去的,像這樣:
http://kodejava.org/how-do-i-send-a-response-status-in-servlet/
所以最準確的辦法就是找到Servlet實現的代碼,看代碼在什么情況下會拋出SC_SEE_OTHER.
Tomcat除了通過Servlet寫代碼實現給Response賦上不同的status code之外,是否還能通過配置xml的方式,做到不同的url進來,自動響應以不同的status code?
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的关于Tomcat如何处理Open Redirect的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票数字暗语
- 下一篇: Jerry的SAP Kyma和Kuber