关于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,但是得到不同的處理。我猜想應(yīng)該是使用的tomcat版本不同或者tomcat的配置不同。但是我不知道用什么方法去驗證這個猜想。
為什么第一個請求會先返回303 error,然后再去取一次,于是遇到404 error,而第二個請求沒有重定向,直接404 not found error?
我以前在ABAP里處理過類似的重定向問題,因為SAP的netweaver也能作為web server用,所以在ABAP里要實現(xiàn)來一個url,動態(tài)決定其response code,比如200還是303,404 都是可以通過配置或者寫代碼來實現(xiàn)的:
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對應(yīng)定義的constant SC_SEE_OTHER.
如果url是Tomcat的servlet 服務(wù)的話,據(jù)我所知這些status code只可能是Servlet實現(xiàn)里set進(jìn)去的,像這樣:
http://kodejava.org/how-do-i-send-a-response-status-in-servlet/
所以最準(zhǔn)確的辦法就是找到Servlet實現(xiàn)的代碼,看代碼在什么情況下會拋出SC_SEE_OTHER.
Tomcat除了通過Servlet寫代碼實現(xiàn)給Response賦上不同的status code之外,是否還能通過配置xml的方式,做到不同的url進(jìn)來,自動響應(yīng)以不同的status code?
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的关于Tomcat如何处理Open Redirect的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票数字暗语
- 下一篇: Jerry的SAP Kyma和Kuber