File tree Expand file tree Collapse file tree 2 files changed +12
-1
lines changed
main/java/org/springframework/security/web/firewall
test/java/org/springframework/security/web/firewall Expand file tree Collapse file tree 2 files changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -130,9 +130,13 @@ public class StrictHttpFirewall implements HttpFirewall {
130130 private static final Predicate <String > ASSIGNED_AND_NOT_ISO_CONTROL_PREDICATE = (
131131 s ) -> ASSIGNED_AND_NOT_ISO_CONTROL_PATTERN .matcher (s ).matches ();
132132
133+ private static final Pattern HEADER_VALUE_PATTERN = Pattern .compile ("[\\ p{IsAssigned}&&[[^\\ p{IsControl}]||\\ t]]*" );
134+
135+ private static final Predicate <String > HEADER_VALUE_PREDICATE = (s ) -> HEADER_VALUE_PATTERN .matcher (s ).matches ();
136+
133137 private Predicate <String > allowedHeaderNames = ASSIGNED_AND_NOT_ISO_CONTROL_PREDICATE ;
134138
135- private Predicate <String > allowedHeaderValues = ASSIGNED_AND_NOT_ISO_CONTROL_PREDICATE ;
139+ private Predicate <String > allowedHeaderValues = HEADER_VALUE_PREDICATE ;
136140
137141 private Predicate <String > allowedParameterNames = ASSIGNED_AND_NOT_ISO_CONTROL_PREDICATE ;
138142
Original file line number Diff line number Diff line change @@ -782,6 +782,13 @@ public void getFirewalledRequestGetHeaderWhenControlCharacterInHeaderValueThenEx
782782 assertThatExceptionOfType (RequestRejectedException .class ).isThrownBy (() -> request .getHeader ("Something" ));
783783 }
784784
785+ @ Test
786+ public void getFirewalledRequestGetHeaderWhenHorizontalTabInHeaderValueThenNoException () {
787+ this .request .addHeader ("Something" , "tab\t value" );
788+ HttpServletRequest request = this .firewall .getFirewalledRequest (this .request );
789+ assertThat (request .getHeader ("Something" )).isEqualTo ("tab\t value" );
790+ }
791+
785792 @ Test
786793 public void getFirewalledRequestGetHeaderWhenUndefinedCharacterInHeaderValueThenException () {
787794 this .request .addHeader ("Something" , "bad\uFFFE value" );
You can’t perform that action at this time.
0 commit comments