@@ -343,6 +343,12 @@ public void getFirewalledRequestWhenContainsUpperboundAsciiThenNoException() {
343
343
this .firewall .getFirewalledRequest (this .request );
344
344
}
345
345
346
+ @ Test
347
+ public void getFirewalledRequestWhenJapaneseCharacterThenNoException () {
348
+ this .request .setServletPath ("/\u3042 " );
349
+ this .firewall .getFirewalledRequest (this .request );
350
+ }
351
+
346
352
@ Test
347
353
public void getFirewalledRequestWhenExceedsUpperboundAsciiThenException () {
348
354
this .request .setRequestURI ("/\u007f " );
@@ -364,6 +370,20 @@ public void getFirewalledRequestWhenContainsEncodedNullThenException() {
364
370
.isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
365
371
}
366
372
373
+ @ Test
374
+ public void getFirewalledRequestWhenContainsLowercaseEncodedLineFeedThenException () {
375
+ this .request .setRequestURI ("/something%0a/" );
376
+ assertThatExceptionOfType (RequestRejectedException .class )
377
+ .isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
378
+ }
379
+
380
+ @ Test
381
+ public void getFirewalledRequestWhenContainsUppercaseEncodedLineFeedThenException () {
382
+ this .request .setRequestURI ("/something%0A/" );
383
+ assertThatExceptionOfType (RequestRejectedException .class )
384
+ .isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
385
+ }
386
+
367
387
@ Test
368
388
public void getFirewalledRequestWhenContainsLineFeedThenException () {
369
389
this .request .setRequestURI ("/something\n /" );
@@ -378,6 +398,20 @@ public void getFirewalledRequestWhenServletPathContainsLineFeedThenException() {
378
398
.isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
379
399
}
380
400
401
+ @ Test
402
+ public void getFirewalledRequestWhenContainsLowercaseEncodedCarriageReturnThenException () {
403
+ this .request .setRequestURI ("/something%0d/" );
404
+ assertThatExceptionOfType (RequestRejectedException .class )
405
+ .isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
406
+ }
407
+
408
+ @ Test
409
+ public void getFirewalledRequestWhenContainsUppercaseEncodedCarriageReturnThenException () {
410
+ this .request .setRequestURI ("/something%0D/" );
411
+ assertThatExceptionOfType (RequestRejectedException .class )
412
+ .isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
413
+ }
414
+
381
415
@ Test
382
416
public void getFirewalledRequestWhenContainsCarriageReturnThenException () {
383
417
this .request .setRequestURI ("/something\r /" );
@@ -392,6 +426,20 @@ public void getFirewalledRequestWhenServletPathContainsCarriageReturnThenExcepti
392
426
.isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
393
427
}
394
428
429
+ @ Test
430
+ public void getFirewalledRequestWhenServletPathContainsLineSeparatorThenException () {
431
+ this .request .setServletPath ("/something\u2028 /" );
432
+ assertThatExceptionOfType (RequestRejectedException .class )
433
+ .isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
434
+ }
435
+
436
+ @ Test
437
+ public void getFirewalledRequestWhenServletPathContainsParagraphSeparatorThenException () {
438
+ this .request .setServletPath ("/something\u2029 /" );
439
+ assertThatExceptionOfType (RequestRejectedException .class )
440
+ .isThrownBy (() -> this .firewall .getFirewalledRequest (this .request ));
441
+ }
442
+
395
443
/**
396
444
* On WebSphere 8.5 a URL like /context-root/a/b;%2f1/c can bypass a rule on /a/b/c
397
445
* because the pathInfo is /a/b;/1/c which ends up being /a/b/1/c while Spring MVC
0 commit comments