31
31
/**
32
32
* @author Rob Winch
33
33
* @author Eddú Meléndez
34
+ * @author Jinwoo Bae
34
35
*/
35
36
public class StrictHttpFirewallTests {
36
37
@@ -723,6 +724,14 @@ public void getFirewalledRequestGetHeaderWhenNotAllowedHeaderNameThenException()
723
724
assertThatExceptionOfType (RequestRejectedException .class ).isThrownBy (() -> request .getHeader ("bad name" ));
724
725
}
725
726
727
+ @ Test
728
+ public void getFirewalledRequestWhenHeaderNameNotAllowedWithAugmentedHeaderNamesThenException () {
729
+ this .firewall
730
+ .setAllowedHeaderNames (StrictHttpFirewall .ALLOWED_HEADER_NAMES .and ((name ) -> !name .equals ("bad name" )));
731
+ HttpServletRequest request = this .firewall .getFirewalledRequest (this .request );
732
+ assertThatExceptionOfType (RequestRejectedException .class ).isThrownBy (() -> request .getHeader ("bad name" ));
733
+ }
734
+
726
735
@ Test
727
736
public void getFirewalledRequestGetHeaderWhenNotAllowedHeaderValueThenException () {
728
737
this .request .addHeader ("good name" , "bad value" );
@@ -731,6 +740,15 @@ public void getFirewalledRequestGetHeaderWhenNotAllowedHeaderValueThenException(
731
740
assertThatExceptionOfType (RequestRejectedException .class ).isThrownBy (() -> request .getHeader ("good name" ));
732
741
}
733
742
743
+ @ Test
744
+ public void getFirewalledRequestWhenHeaderValueNotAllowedWithAugmentedHeaderValuesThenException () {
745
+ this .request .addHeader ("good name" , "bad value" );
746
+ this .firewall .setAllowedHeaderValues (
747
+ StrictHttpFirewall .ALLOWED_HEADER_VALUES .and ((value ) -> !value .equals ("bad value" )));
748
+ HttpServletRequest request = this .firewall .getFirewalledRequest (this .request );
749
+ assertThatExceptionOfType (RequestRejectedException .class ).isThrownBy (() -> request .getHeader ("good name" ));
750
+ }
751
+
734
752
@ Test
735
753
public void getFirewalledRequestGetDateHeaderWhenControlCharacterInHeaderNameThenException () {
736
754
this .request .addHeader ("Bad\0 Name" , "some value" );
@@ -840,6 +858,16 @@ public void getFirewalledRequestGetParameterValuesWhenNotAllowedInParameterValue
840
858
.isThrownBy (() -> request .getParameterValues ("Something" ));
841
859
}
842
860
861
+ @ Test
862
+ public void getFirewalledRequestWhenParameterValueNotAllowedWithAugmentedParameterValuesThenException () {
863
+ this .request .addParameter ("Something" , "bad value" );
864
+ this .firewall .setAllowedParameterValues (
865
+ StrictHttpFirewall .ALLOWED_PARAMETER_VALUES .and ((value ) -> !value .equals ("bad value" )));
866
+ HttpServletRequest request = this .firewall .getFirewalledRequest (this .request );
867
+ assertThatExceptionOfType (RequestRejectedException .class )
868
+ .isThrownBy (() -> request .getParameterValues ("Something" ));
869
+ }
870
+
843
871
@ Test
844
872
public void getFirewalledRequestGetParameterValuesWhenNotAllowedInParameterNameThenException () {
845
873
this .firewall .setAllowedParameterNames ((value ) -> !value .equals ("bad name" ));
@@ -849,6 +877,16 @@ public void getFirewalledRequestGetParameterValuesWhenNotAllowedInParameterNameT
849
877
.isThrownBy (() -> request .getParameterValues ("bad name" ));
850
878
}
851
879
880
+ @ Test
881
+ public void getFirewalledRequestWhenParameterNameNotAllowedWithAugmentedParameterNamesThenException () {
882
+ this .request .addParameter ("bad name" , "good value" );
883
+ this .firewall .setAllowedParameterNames (
884
+ StrictHttpFirewall .ALLOWED_PARAMETER_NAMES .and ((value ) -> !value .equals ("bad name" )));
885
+ HttpServletRequest request = this .firewall .getFirewalledRequest (this .request );
886
+ assertThatExceptionOfType (RequestRejectedException .class )
887
+ .isThrownBy (() -> request .getParameterValues ("bad name" ));
888
+ }
889
+
852
890
// gh-9598
853
891
@ Test
854
892
public void getFirewalledRequestGetParameterWhenNameIsNullThenIllegalArgumentException () {
0 commit comments