Skip to content

Improper HTTP Verb Confusion Check

Description

The code uses `request.get?` without considering `request.head?`, potentially causing unexpected behavior. In Rails, HEAD requests are routed as GET requests but will fail the `request.get?` check.

Examples

Insecure Code

ruby
if request.get?
  # Handle GET request logic here
else
  # Handle others if needed
end

Secure Code

ruby
if request.get?
  # Handle GET request logic here
elsif request.head?
  # Handle HEAD request logic here
else
  # Handle others if needed
end

Remediation

Add an `elsif` condition to handle `request.head?`

Rule Details

FieldValue
IDCODE-0538
CategoryWeb
SeverityMEDIUM
CWECWE-754
ConfidenceHIGH
ImpactMEDIUM
LikelihoodMEDIUM
ExploitabilityMODERATE
Tagsrails, http, verb confusion
OWASPA6:2017-Security Misconfiguration, A04:2021-Insecure Design

References