Objective
Verify that applicable HTTP security headers are present, correctly configured and consistent with the application's security requirements and deployment architecture.
Modern browsers provide security controls that can be influenced by HTTP response headers. These controls can reduce risks associated with content injection, framing, MIME-type confusion, insecure transport, unwanted browser capabilities and other client-side attack conditions.
The assessment should not become a checklist exercise where every possible header is blindly added. Each control must be evaluated against the application's functionality, browser requirements, deployment architecture and compatibility constraints.
Scope
Review applicable responses from:
Prerequisites
| Authorization | Confirm authorization to inspect HTTP responses and test the application. |
|---|---|
| Application architecture | Understand whether headers are generated by the application, web server, reverse proxy, CDN or another infrastructure layer. |
| Browser requirements | Understand browser-facing functionality such as frames, scripts, workers, cross-origin resources and embedded content. |
| Baseline | Obtain the organization's approved security-header baseline where one exists. |
Methodology
Capture representative HTTP responses and inspect the security-relevant response headers. Determine whether each applicable control is absent, present but weak, incorrectly scoped or appropriately configured.
| Review | Purpose |
|---|---|
| Header presence | Determine whether applicable controls are actually delivered to clients. |
| Header value | Determine whether the configured policy provides meaningful protection. |
| Scope | Determine whether the policy applies to the intended resources and contexts. |
| Consistency | Compare normal, authenticated, error and redirected responses where relevant. |
| Application compatibility | Determine whether the policy is compatible with legitimate application functionality. |
Test procedure
Security headers and policies
Controls permitted content sources and browser execution behavior. Review especially for unnecessarily permissive script and object policies.
Content-Security-Policy
Instructs supporting browsers to use HTTPS for the protected host according to the configured policy.
Strict-Transport-Security
Prevents browsers from MIME-sniffing responses where the policy is applicable.
X-Content-Type-Options: nosniff
Where applicable, use CSP framing policy to define which origins may embed the resource.
Content-Security-Policy
Controls the amount of referrer information browsers send with subsequent requests.
Referrer-Policy
Restricts selected browser capabilities where the application has no legitimate need for them.
Permissions-Policy
Review applicable cross-origin isolation and resource policies according to application requirements.
COOP / COEP / CORP
Identify obsolete headers and directives that may create a false impression of protection.
Review current browser support
A policy that is secure in one application can break another. For example, a strict content policy may conflict with legitimate third-party resources, embedded services or application architecture. Security headers must therefore be designed, tested and verified against actual requirements.
Example response
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Security-Policy: default-src 'self'
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=()
Assessment
| Condition | Assessment consideration |
|---|---|
| Header present and appropriate | Generally acceptable for the applicable security requirement. |
| Header missing | Determine whether the missing control is applicable and whether its absence creates meaningful security exposure. |
| Weak policy | Determine whether the configured policy provides materially less protection than the application's security requirements. |
| Overly permissive policy | Assess whether unnecessary origins, browser capabilities or content sources are allowed. |
| Inconsistent configuration | Determine whether sensitive or important response types receive weaker controls than the rest of the application. |
| Header deliberately omitted | Validate the documented architectural reason before reporting the omission. |
Expected result
Applicable browser security controls are implemented through appropriate HTTP response policies, with configurations that are sufficiently restrictive for the application's threat model and compatible with legitimate functionality.
Security policies should be applied consistently across relevant production response paths and should not rely on obsolete controls as the primary protection mechanism.
Failure criteria
A production application delivers an unnecessarily permissive Content Security Policy that allows content from broad external sources. The configured policy is not aligned with the application's documented resource requirements and provides weaker browser-side containment than necessary.
Remediation
Establish an application-specific security-header baseline and implement it at the most appropriate infrastructure layer, such as the application, reverse proxy, web server or CDN.
Recommended approach
- Inventory existing response security headers.
- Identify the security controls applicable to the application's architecture.
- Define explicit policies rather than relying on browser defaults.
- Remove unnecessarily broad origins and capabilities.
- Configure HTTPS enforcement appropriately for the deployment.
- Prevent unnecessary MIME sniffing where applicable.
- Define an appropriate referrer policy.
- Restrict browser capabilities that the application does not require.
- Review cross-origin policies where the application requires them.
- Test the resulting configuration against all legitimate application functionality.
- Include security-header configuration in the controlled deployment baseline.
Example baseline
Content-Security-Policy:
[application-specific policy]
Strict-Transport-Security:
[deployment-appropriate HTTPS policy]
X-Content-Type-Options:
nosniff
Referrer-Policy:
strict-origin-when-cross-origin
Permissions-Policy:
[application-specific capability policy]
A security header can introduce functional failures when its policy conflicts with legitimate scripts, styles, frames, APIs, third-party services or cross-origin resources. Remediation is incomplete until the resulting policy has been verified.
Verification
Applicable security headers are correctly configured and legitimate application functionality continues to operate.
Applicable controls remain absent, weak, inconsistent or unnecessarily permissive.
The relevant header configuration or browser behavior could not be adequately evaluated.
Evidence requirements
Publicly published evidence should not reveal internal hostnames, private origins, credentials, tokens, proprietary infrastructure details or other sensitive configuration information.
Classification
| WebOTG procedure | WebOTG-SM-025 |
|---|---|
| OWASP category | A02:2025 — Security Misconfiguration |
| Procedure type | HTTP security-header and browser-policy configuration review |
| Assessment result | PASS / FAIL / NOT TESTED |
| Finding severity | Determine according to the affected browser security control, application exposure and resulting security impact. |
WebOTG-SM-025 is a WebOTG-defined verification procedure. The identifier is not an OWASP-defined test identifier.
References
| Source | Relevance |
|---|---|
| OWASP Top 10:2025 — A02 | Security Misconfiguration category. |
| OWASP Web Security Testing Guide | Testing methodology relevant to HTTP security configuration. |
| OWASP Application Security Verification Standard | Verification requirements relevant to secure browser and HTTP configuration. |
| HTTP security-header specifications | Authoritative definitions of applicable HTTP security policies and directives. |
| Organization security baseline | Defines approved security-header configuration for the deployment. |
WebOTG should maintain official source URLs, source versions and review dates through its content-management system so references can be updated independently of the procedure template.