java.lang.Object
de.cuioss.http.security.config.SecurityConfiguration
Immutable class representing comprehensive security configuration for HTTP validation.
This class encapsulates all security policies and settings needed to configure HTTP security validators. It provides a type-safe, immutable configuration object that can be shared across multiple validation operations.
Design Principles
- Immutability - Configuration cannot be modified once created
- Type Safety - Strongly typed configuration parameters
- Completeness - Covers all aspects of HTTP security validation
- Composability - Easy to combine with builder patterns
- Performance - Pre-processes sets for O(1) case-insensitive lookups
Configuration Categories
- Path Security - Path traversal prevention, allowed patterns
- Parameter Security - Query parameter validation rules
- Header Security - HTTP header validation policies
- Cookie Security - Cookie validation and security requirements
- Body Security - Request/response body validation settings
- Encoding Security - URL encoding and character validation
- Length Limits - Size restrictions for various HTTP components
- General Policies - Cross-cutting security concerns
Usage Examples
// Create with builder
SecurityConfiguration config = SecurityConfiguration.builder()
.maxPathLength(2048)
.allowPathTraversal(false)
.maxParameterCount(100)
.requireSecureCookies(true)
.build();
// Use in validation
PathValidator validator = new PathValidator(config);
validator.validate("/api/users/123");
// Create restrictive configuration
SecurityConfiguration strict = SecurityConfiguration.strict();
// Create permissive configuration
SecurityConfiguration lenient = SecurityConfiguration.lenient();
Implements: Task C1 from HTTP verification specification- Since:
- 1.0
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleanbooleanbooleanbooleanstatic SecurityConfigurationBuilderbuilder()Creates a builder for constructing SecurityConfiguration instances.booleanstatic SecurityConfigurationdefaults()Creates a security configuration with default balanced settings.booleanbooleaninthashCode()booleanisContentTypeAllowed(@Nullable String contentType) Checks if the configuration allows a specific content type.booleanisHeaderAllowed(@Nullable String headerName) Checks if the configuration allows a specific header name.booleanChecks if this configuration is considered "lenient" based on key security settings.booleanisStrict()Checks if this configuration is considered "strict" based on key security settings.static SecurityConfigurationlenient()Creates a lenient security configuration for maximum compatibility.booleanlongintintintintintintintintintintbooleanbooleanbooleanstatic SecurityConfigurationstrict()Creates a strict security configuration with tight restrictions.toString()
-
Method Details
-
builder
Creates a builder for constructing SecurityConfiguration instances.- Returns:
- A new SecurityConfigurationBuilder with default values
-
strict
Creates a strict security configuration with tight restrictions. This configuration prioritizes security over compatibility.- Returns:
- A SecurityConfiguration with strict security policies
-
lenient
Creates a lenient security configuration for maximum compatibility. This configuration should only be used in trusted environments.- Returns:
- A SecurityConfiguration with permissive policies
-
defaults
Creates a security configuration with default balanced settings.- Returns:
- A SecurityConfiguration with default security policies
-
isHeaderAllowed
Checks if the configuration allows a specific header name.- Parameters:
headerName- The header name to check (null returns false)- Returns:
- true if the header is allowed, false if blocked or null
-
isContentTypeAllowed
Checks if the configuration allows a specific content type.- Parameters:
contentType- The content type to check (null returns false)- Returns:
- true if the content type is allowed, false if blocked or null
-
isStrict
Checks if this configuration is considered "strict" based on key security settings.- Returns:
- true if this configuration uses strict security policies
-
isLenient
Checks if this configuration is considered "lenient" based on key security settings.- Returns:
- true if this configuration uses lenient security policies
-
maxPathLength
-
allowPathTraversal
-
allowDoubleEncoding
-
maxParameterCount
-
maxParameterNameLength
-
maxParameterValueLength
-
maxHeaderCount
-
maxHeaderNameLength
-
maxHeaderValueLength
-
allowedHeaderNames
-
blockedHeaderNames
-
maxCookieCount
-
maxCookieNameLength
-
maxCookieValueLength
-
requireSecureCookies
-
requireHttpOnlyCookies
-
maxBodySize
-
allowedContentTypes
-
blockedContentTypes
-
allowNullBytes
-
allowControlCharacters
-
allowExtendedAscii
-
normalizeUnicode
-
caseSensitiveComparison
-
failOnSuspiciousPatterns
-
logSecurityViolations
-
equals
-
hashCode
-
toString
-