Back to skills
SKILL.md
987 Comprehensive Security Headers Fix 04b05427
ASecurity**Fixed in version:** 0.229.019
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Works with
Security analysis
92/100- Uses curl or wget to download content
npx -y skills add tools-only/X-Skills --skill 987-comprehensive_security_headers_fix_04b05427 --agent claude-codeAre you the author of 987 Comprehensive Security Headers Fix 04b05427?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-987-comprehensive-security-headers-fix-04b05427)# COMPREHENSIVE_SECURITY_HEADERS_FIX
**Fixed in version:** 0.229.019
## Overview
This fix addresses security vulnerabilities related to missing or incomplete security headers, specifically resolving the "missing X-Content-Type-Options header" security warning that could leave the application vulnerable to MIME sniffing attacks.
## Issue Description
Security scanners detected that the application was missing the `X-Content-Type-Options` header, which protects against MIME sniffing attacks. While a basic implementation existed, it was not comprehensive enough and may not have been applied consistently across all responses.
### Root Cause Analysis
1. **Incomplete Header Implementation**: The original security headers implementation was minimal and only included `X-Content-Type-Options`
2. **Missing Configuration Management**: Security headers were hardcoded in the application without centralized configuration
3. **Insufficient Coverage**: Security headers weren't being applied consistently across all content types and responses
4. **No HTTPS-specific Security**: Missing HSTS and other HTTPS-related security measures
## Technical Implementation
### 1. Centralized Security Configuration (config.py)
Added comprehensive security headers configuration:
```python
# Security Headers Configuration
SECURITY_HEADERS = {
'X-Content-Type-Options': 'nosniff',
'X-Frame-Options': 'DENY',
'X-XSS-Protection': '1; mode=block',
'Referrer-Policy': 'strict-origin-when-cross-origin',
'Content-Security-Policy': (
"default-src 'self'; "
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.jsdelivr.net https://code.jquery.com https://stackpath.bootstrapcdn.com; "
"style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://stackpath.bootstrapcdn.com; "
"img-src 'self' data: https: blob:; "
"font-src 'self' https://cdn.jsdelivr.net https://stackpath.bootstrapcdn.com; "
"connect-src 'self' https: wss: ws:; "
"media-src 'self' blob:; "
"object-src 'none'; "
"frame-ancestors 'none'; "
"base-uri 'self';"
)
}
# Security Configuration
ENABLE_STRICT_TRANSPORT_SECURITY = os.getenv('ENABLE_HSTS', 'false').lower() == 'true'
HSTS_MAX_AGE = int(os.getenv('HSTS_MAX_AGE', '31536000')) # 1 year default
```
### 2. Enhanced Security Headers Implementation (app.py)
Replaced the basic security headers function with a comprehensive implementation:
```python
@app.after_request
def add_security_headers(response):
"""
Add comprehensive security headers to all responses to protect against
various web vulnerabilities including MIME sniffing attacks.
"""
from config import SECURITY_HEADERS, ENABLE_STRICT_TRANSPORT_SECURITY, HSTS_MAX_AGE
# Apply all configured security headers
for header_name, header_value in SECURITY_HEADERS.items():
response.headers[header_name] = header_value
# Add HSTS header only if HTTPS is enabled and configured
if ENABLE_STRICT_TRANSPORT_SECURITY and request.is_secure:
response.headers['Strict-Transport-Security'] = f'max-age={HSTS_MAX_AGE}; includeSubDomains; preload'
# Ensure X-Content-Type-Options is always present for specific content types
if response.content_type and any(ct in response.content_type.lower() for ct in ['text/', 'application/json', 'application/javascript', 'application/octet-stream']):
response.headers['X-Content-Type-Options'] = 'nosniff'
return response
```
### 3. Version Update
Updated application version from `0.229.018` to `0.229.019` in `config.py`.
## Security Headers Explained
### X-Content-Type-Options: nosniff
- **Purpose**: Prevents MIME sniffing attacks
- **Protection**: Stops browsers from trying to guess content types
- **Impact**: Forces browsers to respect the declared Content-Type header
### X-Frame-Options: DENY
- **Purpose**: Prevents clickjacking attacks
- **Protection**: Prevents the page from being loaded in frames/iframes
- **Impact**: Protects against UI redress attacks
### X-XSS-Protection: 1; mode=block
- **Purpose**: Enables XSS protection in older browsers
- **Protection**: Activates browser's built-in XSS filter
- **Impact**: Provides additional XSS protection layer
### Referrer-Policy: strict-origin-when-cross-origin
- **Purpose**: Controls referrer information disclosure
- **Protection**: Limits referrer information sent to external sites
- **Impact**: Improves privacy while maintaining functionality
### Content-Security-Policy
- **Purpose**: Comprehensive protection against XSS and injection attacks
- **Protection**: Controls resource loading and script execution
- **Impact**: Significantly reduces attack surface
### Strict-Transport-Security (HSTS)
- **Purpose**: Enforces HTTPS connections
- **Protection**: Prevents protocol downgrade attacks
- **Impact**: Ensures secure connections (when HTTPS is enabled)
## Configuration Options
### Environment Variables
- `ENABLE_HSTS`: Set to 'true' to enable HSTS headers (requires HTTPS)
- `HSTS_MAX_AGE`: HSTS max-age in seconds (default: 31536000 - 1 year)
### CSP Customization
The Content Security Policy can be modified in `config.py` to accommodate specific application needs:
- Add trusted domains to script-src, style-src, etc.
- Modify connect-src for API endpoints
- Adjust img-src for image sources
## Testing and Validation
### Functional Test
Created comprehensive test: `functional_tests/test_security_headers_comprehensive.py`
**Test Coverage:**
- Verifies all security headers are present
- Tests MIME sniffing protection specifically
- Validates configuration accessibility
- Tests multiple content types
- Provides detailed security headers summary
**Run the test:**
```bash
cd functional_tests
python test_security_headers_comprehensive.py
```
### Manual Verification
1. **Browser Developer Tools**: Check Response Headers in Network tab
2. **Security Scanners**: Use tools like SecurityHeaders.com or Mozilla Observatory
3. **Curl Testing**: `curl -I http://localhost:5000` to see headers
## Benefits
### Security Improvements
1. **MIME Sniffing Protection**: Eliminates risk of content type confusion attacks
2. **Clickjacking Prevention**: Protects against UI redress attacks
3. **XSS Mitigation**: Multiple layers of XSS protection
4. **Information Disclosure**: Controlled referrer policy
5. **Injection Attack Prevention**: Comprehensive CSP protection
### Compliance and Standards
- Meets OWASP security header recommendations
- Addresses common security scanner findings
- Follows web security best practices
- Provides foundation for security certifications
### Maintainability
- Centralized configuration management
- Environment-based configuration
- Easy to modify and extend
- Clear documentation and testing
## Future Considerations
### Production Enhancements
1. **HTTPS Enforcement**: Enable HSTS in production environments
2. **CSP Refinement**: Gradually tighten CSP policies based on usage patterns
3. **Security Monitoring**: Implement CSP reporting for policy violations
4. **Header Validation**: Add automated security header testing to CI/CD
### Additional Security Measures
1. **Feature-Policy/Permissions-Policy**: Control browser features
2. **Expect-CT**: Certificate Transparency monitoring
3. **Cross-Origin Headers**: CORP, COEP, COOP for advanced isolation
4. **Subresource Integrity**: SRI for external resources
## Impact Assessment
### Before Fix
- Missing comprehensive security headers
- Vulnerable to MIME sniffing attacks
- Failed security scanner checks
- Limited protection against web vulnerabilities
### After Fix
- Complete security headers implementation
- Protection against multiple attack vectors
- Passes security scanner validation
- Configurable and maintainable security posture
## Related Files Modified
- `config.py`: Added security configuration
- `app.py`: Enhanced security headers implementation
- `functional_tests/test_security_headers_comprehensive.py`: Created comprehensive test
## Cross-References
- Security Headers Best Practices: [OWASP Secure Headers Project](https://owasp.org/www-project-secure-headers/)
- CSP Guide: [Mozilla CSP Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
- Testing Tools: [SecurityHeaders.com](https://securityheaders.com/)
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.