@@ -26,25 +26,25 @@ public class UrlForwardTest extends HttpServlet implements Filter {
2626 // Spring `ModelAndView` test cases
2727 @ GetMapping ("/bad1" )
2828 public ModelAndView bad1 (String url ) {
29- return new ModelAndView (url ); // $ hasUrlForward
29+ return new ModelAndView (url ); // $ hasTaintFlow
3030 }
3131
3232 @ GetMapping ("/bad2" )
3333 public ModelAndView bad2 (String url ) {
3434 ModelAndView modelAndView = new ModelAndView ();
35- modelAndView .setViewName (url ); // $ hasUrlForward
35+ modelAndView .setViewName (url ); // $ hasTaintFlow
3636 return modelAndView ;
3737 }
3838
3939 // Spring `"forward:"` prefix test cases
4040 @ GetMapping ("/bad3" )
4141 public String bad3 (String url ) {
42- return "forward:" + url + "/swagger-ui/index.html" ; // $ hasUrlForward
42+ return "forward:" + url + "/swagger-ui/index.html" ; // $ hasTaintFlow
4343 }
4444
4545 @ GetMapping ("/bad4" )
4646 public ModelAndView bad4 (String url ) {
47- ModelAndView modelAndView = new ModelAndView ("forward:" + url ); // $ hasUrlForward
47+ ModelAndView modelAndView = new ModelAndView ("forward:" + url ); // $ hasTaintFlow
4848 return modelAndView ;
4949 }
5050
@@ -60,7 +60,7 @@ public ModelAndView redirect(String url) {
6060 @ GetMapping ("/bad5" )
6161 public void bad5 (String url , HttpServletRequest request , HttpServletResponse response ) {
6262 try {
63- request .getRequestDispatcher (url ).include (request , response ); // $ hasUrlForward
63+ request .getRequestDispatcher (url ).include (request , response ); // $ hasTaintFlow
6464 } catch (ServletException e ) {
6565 e .printStackTrace ();
6666 } catch (IOException e ) {
@@ -71,7 +71,7 @@ public void bad5(String url, HttpServletRequest request, HttpServletResponse res
7171 @ GetMapping ("/bad6" )
7272 public void bad6 (String url , HttpServletRequest request , HttpServletResponse response ) {
7373 try {
74- request .getRequestDispatcher ("/WEB-INF/jsp/" + url + ".jsp" ).include (request , response ); // $ hasUrlForward
74+ request .getRequestDispatcher ("/WEB-INF/jsp/" + url + ".jsp" ).include (request , response ); // $ hasTaintFlow
7575 } catch (ServletException e ) {
7676 e .printStackTrace ();
7777 } catch (IOException e ) {
@@ -82,7 +82,7 @@ public void bad6(String url, HttpServletRequest request, HttpServletResponse res
8282 @ GetMapping ("/bad7" )
8383 public void bad7 (String url , HttpServletRequest request , HttpServletResponse response ) {
8484 try {
85- request .getRequestDispatcher ("/WEB-INF/jsp/" + url + ".jsp" ).forward (request , response ); // $ hasUrlForward
85+ request .getRequestDispatcher ("/WEB-INF/jsp/" + url + ".jsp" ).forward (request , response ); // $ hasTaintFlow
8686 } catch (ServletException e ) {
8787 e .printStackTrace ();
8888 } catch (IOException e ) {
@@ -106,7 +106,7 @@ public void good1(String url, HttpServletRequest request, HttpServletResponse re
106106 public void bad8 (String urlPath , HttpServletRequest request , HttpServletResponse response ) {
107107 try {
108108 String url = "/pages" + urlPath ;
109- request .getRequestDispatcher (url ).forward (request , response ); // $ hasUrlForward
109+ request .getRequestDispatcher (url ).forward (request , response ); // $ hasTaintFlow
110110 } catch (ServletException e ) {
111111 e .printStackTrace ();
112112 } catch (IOException e ) {
@@ -145,7 +145,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
145145 String path = ((HttpServletRequest ) request ).getServletPath ();
146146 // A sample payload "/%57EB-INF/web.xml" can bypass this `startsWith` check
147147 if (path != null && !path .startsWith ("/WEB-INF" )) {
148- request .getRequestDispatcher (path ).forward (request , response ); // $ hasUrlForward
148+ request .getRequestDispatcher (path ).forward (request , response ); // $ hasTaintFlow
149149 } else {
150150 chain .doFilter (request , response );
151151 }
@@ -158,7 +158,7 @@ public void doFilter2(ServletRequest request, ServletResponse response, FilterCh
158158 String path = ((HttpServletRequest ) request ).getServletPath ();
159159
160160 if (path .startsWith (BASE_PATH ) && !path .contains (".." )) {
161- request .getRequestDispatcher (path ).forward (request , response ); // $ hasUrlForward
161+ request .getRequestDispatcher (path ).forward (request , response ); // $ hasTaintFlow
162162 } else {
163163 chain .doFilter (request , response );
164164 }
@@ -190,7 +190,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
190190 rd .forward (request , response );
191191 } else {
192192 ServletContext sc = cfg .getServletContext ();
193- RequestDispatcher rd = sc .getRequestDispatcher (returnURL ); // $ hasUrlForward
193+ RequestDispatcher rd = sc .getRequestDispatcher (returnURL ); // $ hasTaintFlow
194194 rd .forward (request , response );
195195 }
196196 }
@@ -206,7 +206,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
206206 RequestDispatcher rd = request .getRequestDispatcher ("/Login.jsp" );
207207 rd .forward (request , response );
208208 } else {
209- RequestDispatcher rd = request .getRequestDispatcher (returnURL ); // $ hasUrlForward
209+ RequestDispatcher rd = request .getRequestDispatcher (returnURL ); // $ hasTaintFlow
210210 rd .forward (request , response );
211211 }
212212 }
@@ -233,7 +233,7 @@ protected void doHead1(HttpServletRequest request, HttpServletResponse response)
233233
234234 // A sample payload "/pages/welcome.jsp/../WEB-INF/web.xml" can bypass the `startsWith` check
235235 if (path .startsWith (BASE_PATH )) {
236- request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasUrlForward
236+ request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasTaintFlow
237237 }
238238 }
239239
@@ -244,7 +244,7 @@ protected void doHead2(HttpServletRequest request, HttpServletResponse response)
244244 String path = request .getParameter ("path" );
245245
246246 if (path .startsWith (BASE_PATH ) && !path .contains (".." )) {
247- request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasUrlForward
247+ request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasTaintFlow
248248 }
249249 }
250250
@@ -258,7 +258,7 @@ protected void doHead3(HttpServletRequest request, HttpServletResponse response)
258258 Path requestedPath = Paths .get (BASE_PATH ).resolve (path ).normalize ();
259259
260260 if (requestedPath .startsWith (BASE_PATH )) {
261- request .getServletContext ().getRequestDispatcher (requestedPath .toString ()).forward (request , response ); // $ hasUrlForward
261+ request .getServletContext ().getRequestDispatcher (requestedPath .toString ()).forward (request , response ); // $ hasTaintFlow
262262 }
263263 }
264264
@@ -270,7 +270,7 @@ protected void doHead4(HttpServletRequest request, HttpServletResponse response)
270270 Path requestedPath = Paths .get (BASE_PATH ).resolve (path ).normalize ();
271271
272272 if (!requestedPath .startsWith ("/WEB-INF" ) && !requestedPath .startsWith ("/META-INF" )) {
273- request .getServletContext ().getRequestDispatcher (requestedPath .toString ()).forward (request , response ); // $ hasUrlForward
273+ request .getServletContext ().getRequestDispatcher (requestedPath .toString ()).forward (request , response ); // $ hasTaintFlow
274274 }
275275 }
276276
@@ -281,7 +281,7 @@ protected void doHead5(HttpServletRequest request, HttpServletResponse response)
281281 path = URLDecoder .decode (path , "UTF-8" );
282282
283283 if (!path .startsWith ("/WEB-INF/" ) && !path .contains (".." )) {
284- request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasUrlForward
284+ request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasTaintFlow
285285 }
286286 }
287287
@@ -319,7 +319,7 @@ protected void doHead8(HttpServletRequest request, HttpServletResponse response)
319319 String path = request .getParameter ("path" );
320320 if (path .contains ("%" )){ // incorrect check
321321 if (!path .startsWith ("/WEB-INF/" ) && !path .contains (".." )) {
322- request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasUrlForward
322+ request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ hasTaintFlow
323323 }
324324 }
325325 }
@@ -362,14 +362,14 @@ protected void doHead11(HttpServletRequest request, HttpServletResponse response
362362 }
363363
364364 if (!path .startsWith ("/WEB-INF/" ) && !path .contains (".." )) {
365- request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ SPURIOUS: hasUrlForward
365+ request .getServletContext ().getRequestDispatcher (path ).include (request , response ); // $ SPURIOUS: hasTaintFlow
366366 }
367367 }
368368
369369 // BAD: `StaplerResponse.forward` without any checks
370370 public void generateResponse (StaplerRequest req , StaplerResponse rsp , Object obj ) throws IOException , ServletException {
371371 String url = req .getParameter ("target" );
372- rsp .forward (obj , url , req ); // $ hasUrlForward
372+ rsp .forward (obj , url , req ); // $ hasTaintFlow
373373 }
374374
375375 // QHelp example
@@ -381,7 +381,7 @@ protected void doGet2(HttpServletRequest request, HttpServletResponse response)
381381 ServletContext sc = cfg .getServletContext ();
382382
383383 // BAD: a request parameter is incorporated without validation into a URL forward
384- sc .getRequestDispatcher (request .getParameter ("target" )).forward (request , response ); // $ hasUrlForward
384+ sc .getRequestDispatcher (request .getParameter ("target" )).forward (request , response ); // $ hasTaintFlow
385385
386386 // GOOD: the request parameter is validated against a known fixed string
387387 if (VALID_FORWARD .equals (request .getParameter ("target" ))) {
0 commit comments