Class: QueryGuard::Analysis::SelectStarRiskDetector

Inherits:
RiskDetector
  • Object
show all
Defined in:
lib/query_guard/analysis/risk_detectors.rb

Overview

Detects SELECT * usage patterns

Constant Summary collapse

SELECT_STAR_PATTERN =
/\bSELECT\s+\*/i.freeze

Instance Attribute Summary

Attributes inherited from RiskDetector

#name

Instance Method Summary collapse

Constructor Details

#initialize ⇒ SelectStarRiskDetector

Returns a new instance of SelectStarRiskDetector.



39
40
41
# File 'lib/query_guard/analysis/risk_detectors.rb', line 39

def initialize
  super(:select_star_risk)
end

Instance Method Details

#detect(query, config) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/query_guard/analysis/risk_detectors.rb', line 43

def detect(query, config)
  risks = []
  return risks unless matches_pattern?(query.sql, SELECT_STAR_PATTERN)

  risks << {
    pattern: :select_star,
    risk_level: :medium,
    message: "SELECT * can fetch unnecessary columns, increasing bandwidth and reducing query efficiency",
    metadata: {
      recommendation: "Specify only required columns explicitly",
      impact: "Unnecessary data transfer; harder schema evolution"
    }
  }

  risks
end