Objective
Verify that the application, web server and intermediary infrastructure expose only the HTTP methods required for legitimate application functionality.
HTTP defines multiple request methods, but an application does not necessarily need to accept every method on every endpoint. Unnecessary methods can increase the attack surface and, depending on server configuration, may expose unintended functionality.
The assessment must distinguish between a method being technically supported by a server and a method being dangerously usable against an application resource.
Methods such as OPTIONS, HEAD, PUT, PATCH or DELETE may be legitimately required. The finding should be based on unnecessary exposure, unsafe behavior or a mismatch with the application's intended design.
Scope
Review HTTP methods across:
Prerequisites
| Authorization | Confirm authorization to send controlled HTTP requests to the application. |
|---|---|
| Endpoint inventory | Identify representative application endpoints and their intended operations. |
| API documentation | Where applicable, review documented methods for API resources. |
| Infrastructure information | Identify web servers, reverse proxies, API gateways and CDNs that may modify method handling. |
Methodology
Determine which HTTP methods are accepted by representative endpoints and then establish whether each accepted method is necessary and securely implemented.
| Method | Purpose |
|---|---|
| OPTIONS | Determine advertised or supported methods and evaluate whether disclosure is appropriate. |
| PUT / PATCH | Determine whether resource modification is intentionally supported and correctly protected. |
| DELETE | Determine whether deletion operations are intentionally exposed and protected by appropriate authorization controls. |
| TRACE | Determine whether the method is enabled when it is not required by the deployment. |
| CONNECT | Verify that proxy infrastructure does not unintentionally expose CONNECT functionality to untrusted clients. |
Test procedure
HTTP method review
| Method | Typical purpose | Review |
|---|---|---|
| GET | Retrieve a resource. | Normally expected for resources that support retrieval. |
| HEAD | Retrieve response metadata without the response body. | Usually legitimate where supported by the web stack. |
| POST | Submit data or request an operation. | Review authentication, authorization, validation and CSRF requirements. |
| PUT | Replace or create a resource. | Should be enabled only where explicitly required. |
| PATCH | Partially modify a resource. | Should be enabled only where explicitly required. |
| DELETE | Delete a resource. | Must have appropriate authentication and authorization controls. |
| OPTIONS | Request communication options. | Review whether method information is appropriately exposed. |
| TRACE | Diagnostic request loop-back. | Disable where not required. |
| CONNECT | Establish a tunnel through a proxy. | Ensure it is not unintentionally exposed by proxy infrastructure. |
Example request
OPTIONS /account/profile HTTP/1.1
Host: example.test
Accept: */*
Example response
HTTP/1.1 204 No Content
Allow: GET, HEAD, POST, OPTIONS
The returned method list should be compared with the application's documented behavior. An unexpected method should then be tested to determine whether it actually performs an unintended operation.
Assessment
| Condition | Assessment consideration |
|---|---|
| Method rejected | Generally expected when the method is not supported by the endpoint. |
| Method supported and documented | Review its authentication, authorization, validation and business logic controls. |
| Method supported but undocumented | Investigate whether the functionality is intentional or an infrastructure configuration artifact. |
| State-changing method without proper authorization | Treat as a potentially significant security issue and investigate the resulting impact. |
| TRACE unnecessarily enabled | Determine whether the method is required; disable it when unnecessary. |
Expected result
Each endpoint accepts only the HTTP methods required for its documented functionality, and every supported state-changing method is protected by appropriate authentication, authorization and application security controls.
Unsupported methods should be rejected with an appropriate HTTP response rather than being silently mapped to unintended application functionality.
Failure criteria
A production endpoint intended only for resource retrieval accepts an additional state-changing HTTP method that is not documented or required by the application. The method is processed by the backend and creates unintended application functionality.
Remediation
Establish an explicit HTTP method policy for each application endpoint and enforce it at the appropriate application or infrastructure layer.
Recommended approach
- Document the HTTP methods required by each application resource.
- Disable methods that are not required.
- Enforce method restrictions at the appropriate web-server, gateway or application layer.
- Ensure state-changing methods enforce authentication and authorization.
- Apply request validation to supported methods.
- Review CSRF protections for browser-based state-changing requests where applicable.
- Disable TRACE where it is not required.
- Review proxy configurations for CONNECT and other tunneling behavior.
- Keep method handling consistent across application instances and environments.
- Re-test after web-server, gateway or application configuration changes.
Example web-server policy
# Example policy concept
GET -> allowed
HEAD -> allowed
POST -> allowed where required
PUT -> explicitly required only
PATCH -> explicitly required only
DELETE -> explicitly required only
TRACE -> disabled
CONNECT -> not exposed to application clients
Unsupported methods
-> reject with appropriate HTTP response
Restricting methods only at a reverse proxy may not be sufficient if the backend can be reached through another route. Where architecture permits, enforce the intended method policy at the application layer as well.
Verification
HTTP methods are intentionally configured, unnecessary methods are rejected and supported state-changing operations are appropriately protected.
An unnecessary or unsafe method remains exposed and creates a material security or configuration weakness.
The application's effective method handling could not be adequately determined.
Evidence requirements
Remove authentication cookies, bearer tokens, API keys, session identifiers and other sensitive values from captured requests and responses before storing or sharing evidence.
Classification
| WebOTG procedure | WebOTG-SM-015 |
|---|---|
| OWASP category | A02:2025 — Security Misconfiguration |
| Procedure type | HTTP method configuration review |
| Assessment result | PASS / FAIL / NOT TESTED |
| Finding severity | Determine from the exposed method, actual functionality, authentication and authorization controls, exploitability and resulting security impact. |
WebOTG-SM-015 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 methodology. |
| OWASP Application Security Verification Standard | Verification requirements relevant to application configuration and access control. |
| HTTP Semantics | Definitions and expected behavior of HTTP request methods and responses. |
| Application API specification | Defines the methods intentionally supported by application resources. |
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.