Objective
Verify that HTTP responses implement security headers appropriate to the application's architecture and that those headers are correctly configured without weakening the intended browser security controls.
Security headers allow an application to communicate security-related policies to user agents. Depending on the application, these policies can reduce risks such as clickjacking, MIME-type confusion, unintended cross-origin behavior and unsafe browser feature use.
Header testing must be performed in the context of the application. A missing header is not automatically a vulnerability, and a stronger-looking header value is not necessarily safer if it breaks required application behavior.
The objective is not to maximize the number of security headers. Determine which controls are applicable, whether they are correctly configured and whether their effective browser behavior matches the application's security requirements.
Scope
Review security-related response headers on:
Prerequisites
| Authorization | Confirm authorization to assess the application's HTTP responses. |
|---|---|
| Browser-based application | Determine whether the application relies on browser features affected by security response headers. |
| Content Security Policy | Identify whether the application uses a Content Security Policy and whether it is deployed as a response header or another supported mechanism. |
| Architecture | Identify web servers, reverse proxies, CDNs and application layers capable of adding, modifying or removing headers. |
Methodology
Review actual HTTP responses, determine the effective browser-facing security policy and compare the result with the application's documented requirements.
| Review | Purpose |
|---|---|
| Header presence | Determine whether applicable security headers are returned. |
| Header value | Determine whether each header expresses the intended security policy. |
| Header consistency | Compare responses across representative application paths and status codes. |
| Browser effect | Where necessary, validate the effective browser behavior rather than relying only on the raw header string. |
| Infrastructure behavior | Determine whether a proxy, CDN or web server changes the security policy. |
Test procedure
Security header review
The following headers are common areas for review. Applicability depends on the application's architecture and browser-facing functionality.
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=()
A header can be present while its value is ineffective, overly permissive or incompatible with the intended security policy. Always assess the actual directive or value.
Assessment
| Condition | Assessment consideration |
|---|---|
| Header present and correctly configured | Generally satisfies the relevant configuration requirement. |
| Header absent but not applicable | Do not raise a finding solely because a generic scanner expects the header. |
| Header absent and security property is required | Determine the resulting security impact before classifying the issue. |
| Header present with weak value | Assess the effective policy and identify the security control that is weakened. |
| Inconsistent headers | Determine whether sensitive endpoints receive weaker protection than intended. |
| Conflicting policies | Determine the effective browser behavior and document the configuration conflict. |
Expected result
Applicable security headers are intentionally configured, their values implement the required browser security policies, and the configuration remains consistent across relevant application responses.
Security-sensitive responses should not unintentionally lose protections because a reverse proxy, CDN, error handler or alternate application path uses a different response configuration.
Failure criteria
The application serves sensitive browser-facing content without an applicable security policy required by its deployment model. The missing control weakens the intended browser security boundary and should be implemented consistently across relevant responses.
Remediation
Define a documented browser security-header baseline appropriate to the application's architecture and enforce it consistently at the correct infrastructure or application layer.
Recommended approach
- Identify the browser security properties relevant to the application.
- Define approved header names and policy values.
- Implement the policies at a controlled server, application or gateway layer.
- Avoid unnecessarily permissive policy directives.
- Review Content Security Policy sources and exceptions carefully.
- Configure HTTPS transport policy appropriately for the production deployment.
- Apply the intended configuration consistently to normal, authenticated and security-sensitive responses.
- Verify that CDNs, reverse proxies and error handlers do not remove or alter required headers.
- Test application functionality after policy changes.
- Record the approved header baseline for future configuration audits.
Example baseline
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=();
Content Security Policy is application-specific. Copying a restrictive policy without understanding the application's scripts, styles, frames and third-party dependencies can break functionality. Build and test the policy against the actual application.
Verification
Applicable browser security policies are correctly configured and consistently delivered.
A material security-header weakness remains after remediation or the effective policy does not satisfy the documented requirement.
The effective security-header configuration could not be adequately determined.
Evidence requirements
Remove cookies, bearer tokens, session identifiers, internal hostnames and other sensitive values before publishing HTTP response evidence.
Classification
| WebOTG procedure | WebOTG-SM-017 |
|---|---|
| OWASP category | A02:2025 — Security Misconfiguration |
| Procedure type | HTTP security-header configuration review |
| Assessment result | PASS / FAIL / NOT TESTED |
| Finding severity | Determine from the affected security property, application context, exploitability and resulting impact. |
WebOTG-SM-017 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 | Web application security testing and configuration review methodology. |
| OWASP Application Security Verification Standard | Application security verification requirements relevant to browser and transport security controls. |
| HTTP Semantics | HTTP response and request semantics relevant to application behavior. |
| Browser security specifications | Defines behavior for applicable browser security mechanisms and policies. |
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.