首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Tomcat如何处理Open Redirect的问题

关于Tomcat如何处理Open Redirect的问题

作者头像
Jerry Wang
发布2019-05-31 11:24:42
7830
发布2019-05-31 11:24:42
举报

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1439870

Thursday, 18 February, 2016 5:03 PM

最近处理security issue的时候,遇到一个问题。由于对tomcat的机制不是很熟悉,所以没啥头绪。

问题如下

  1. 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,而不是直接点击)
  2. 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?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年01月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档