Skip to content

Commit 20f00ac

Browse files
committed
Issue ESAPI#403 -- uncovered the last magic number calls. This part of the issue is done!
1 parent e6a6cb6 commit 20f00ac

File tree

5 files changed

+15
-6
lines changed

5 files changed

+15
-6
lines changed

src/main/java/org/owasp/esapi/reference/DefaultHTTPUtilities.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -872,10 +872,11 @@ public void setCurrentHTTP(HttpServletRequest request, HttpServletResponse respo
872872
*/
873873
public void setHeader(HttpServletResponse response, String name, String value) {
874874
try {
875+
SecurityConfiguration sc = ESAPI.securityConfiguration();
875876
String strippedName = StringUtilities.replaceLinearWhiteSpace(name);
876877
String strippedValue = StringUtilities.replaceLinearWhiteSpace(value);
877-
String safeName = ESAPI.validator().getValidInput("setHeader", strippedName, "HTTPHeaderName", 50, false);
878-
String safeValue = ESAPI.validator().getValidInput("setHeader", strippedValue, "HTTPHeaderValue", 500, false);
878+
String safeName = ESAPI.validator().getValidInput("setHeader", strippedName, "HTTPHeaderName", sc.getIntProp("HttpUtilities.MaxHeaderNameSize"), false);
879+
String safeValue = ESAPI.validator().getValidInput("setHeader", strippedValue, "HTTPHeaderValue", sc.getIntProp("HttpUtilities.MaxHeaderValueSize"), false);
879880
response.setHeader(safeName, safeValue);
880881
} catch (ValidationException e) {
881882
logger.warning(Logger.SECURITY_FAILURE, "Attempt to set invalid header denied", e);

src/main/java/org/owasp/esapi/reference/DefaultSecurityConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1063,7 +1063,7 @@ public boolean getForceSecureCookies() {
10631063
* {@inheritDoc}
10641064
*/
10651065
public int getMaxHttpHeaderSize() {
1066-
return getESAPIProperty( MAX_HTTP_HEADER_SIZE, 4096 );
1066+
return getESAPIProperty( MAX_HTTP_HEADER_SIZE, 4096);
10671067
}
10681068

10691069
/**

src/main/java/org/owasp/esapi/reference/DefaultValidator.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,14 +1097,16 @@ public String getValidPrintable(String context, String input,int maxLength, bool
10971097
* Returns true if input is a valid redirect location.
10981098
*/
10991099
public boolean isValidRedirectLocation(String context, String input, boolean allowNull) throws IntrusionException {
1100-
return ESAPI.validator().isValidInput( context, input, "Redirect", 512, allowNull);
1100+
SecurityConfiguration sc = ESAPI.securityConfiguration();
1101+
return ESAPI.validator().isValidInput( context, input, "Redirect", sc.getIntProp("HttpUtilities.maxRedirectLength"), allowNull);
11011102
}
11021103

11031104
/**
11041105
* Returns true if input is a valid redirect location.
11051106
*/
11061107
public boolean isValidRedirectLocation(String context, String input, boolean allowNull, ValidationErrorList errors) throws IntrusionException {
1107-
return ESAPI.validator().isValidInput( context, input, "Redirect", 512, allowNull, errors);
1108+
SecurityConfiguration sc = ESAPI.securityConfiguration();
1109+
return ESAPI.validator().isValidInput( context, input, "Redirect", sc.getIntProp("HttpUtilities.maxRedirectLength"), allowNull, errors);
11081110
}
11091111

11101112

@@ -1113,7 +1115,8 @@ public boolean isValidRedirectLocation(String context, String input, boolean all
11131115
* will generate a descriptive IntrusionException.
11141116
*/
11151117
public String getValidRedirectLocation(String context, String input, boolean allowNull) throws ValidationException, IntrusionException {
1116-
return ESAPI.validator().getValidInput( context, input, "Redirect", 512, allowNull);
1118+
SecurityConfiguration sc = ESAPI.securityConfiguration();
1119+
return ESAPI.validator().getValidInput( context, input, "Redirect", sc.getIntProp("HttpUtilities.maxRedirectLength"), allowNull);
11171120
}
11181121

11191122
/**

src/test/java/org/owasp/esapi/reference/DefaultSecurityConfigurationTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,5 +475,8 @@ public void defaultPropertiesTest(){
475475
// # Maximum size of HTTP header value--the validator regex may have additional values.
476476
// HttpUtilities.MaxHeaderValueSize=4096
477477
assertEquals(4096, sc.getIntProp("HttpUtilities.MaxHeaderValueSize"));
478+
// # Maximum length of a redirect
479+
// HttpUtilities.maxRedirectLength=512
480+
assertEquals(512, sc.getIntProp("HttpUtilities.maxRedirectLength"));
478481
}
479482
}

src/test/resources/esapi/ESAPI.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,8 @@ HttpUtilities.MaxHeaderValueSize=4096
339339
HttpUtilities.HTTPJSESSIONIDLENGTH=50
340340
# Maximum length of a URL (see https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers)
341341
HttpUtilities.URILENGTH=2000
342+
# Maximum length of a redirect
343+
HttpUtilities.maxRedirectLength=512
342344
# Maximum length for an http scheme
343345
HttpUtilities.HTTPSCHEMELENGTH=10
344346
# Maximum length for an http host

0 commit comments

Comments
 (0)