Production Health Report · generated 2026-10-31 04:23:56 · Scanned 8 source file(s) in 196 ms
examples/php-demo
Executive Summary
Analyzed php-demo (PHP, CodeIgniter 3, MySQL). Collected 20 finding(s): 1 critical, 12 high, 2 medium, 5 low, spanning static analysis, runtime errors, and logs. The most pressing items are listed below; explanations restate the detected findings without adding unverified conclusions.
Guidance mode: local (heuristic, no LLM) — explanations are grounded in the detected findings.
Security severity grade
E
Language
PHP
Findings
22
Est. fix effort
~8h 5m
Critical 1High 12Medium 2Low 7
10F
Security
57F
Code Health · All Engines
57F
Observer Built-in
How scoring works: severity, CWE and OWASP tags follow industry standards (CVSS-aligned).
The Security rating (A–E) is standards-style — it reflects the single most severe security
issue present (E = Critical … A = none), the same model tools like SonarQube use. The 0–100 scores
use scoring model v2 over first-party files. Code Health includes all enabled engines; Observer Built-in isolates native rules. Optional engines contributed 0 health finding(s).
Observer severity grade: A = no security finding; B = Low; C = Medium; D = High; E = Critical. The grade reflects the worst detected security severity. Scores and standards mappings are heuristic summaries, not certification or proof of compliance.
22 finding occurrences across 8 scanned file(s). They are consolidated into 13 unique issue types below; the count on each row shows its occurrences.
Expand a row to see every location (clickable — opens the public demo source on GitHub) and the possible remediation. Findings and guidance are rule-based — confirm before acting.
CriticalHardcoded Stripe live secret keySecurity1×
HighSQL built with string concatenationFix complexity: MediumEffort: ~30 min per query
ProblemSQL built with string concatenation (application/models/BookingModel.php:12)
Root causeInterpolating variables directly into a SQL string allows SQL injection if any value is attacker-controlled.
ImpactHigh — significant risk to stability, security, or correctness.
ExploitabilityAn attacker submits crafted input (e.g. ' OR '1'='1) to read, modify, or delete database records.
Possible fixUse parameterized queries / query bindings (prepared statements) instead of concatenation.
Example
Before: $db->query("SELECT * FROM users WHERE id = " . $id);
After: $db->query("SELECT * FROM users WHERE id = ?", [$id]); // parameterized
HighSQL built with string concatenationFix complexity: MediumEffort: ~30 min per query
ProblemSQL built with string concatenation (application/models/BookingModel.php:20)
Root causeInterpolating variables directly into a SQL string allows SQL injection if any value is attacker-controlled.
ImpactHigh — significant risk to stability, security, or correctness.
ExploitabilityAn attacker submits crafted input (e.g. ' OR '1'='1) to read, modify, or delete database records.
Possible fixUse parameterized queries / query bindings (prepared statements) instead of concatenation.
Example
Before: $db->query("SELECT * FROM users WHERE id = " . $id);
After: $db->query("SELECT * FROM users WHERE id = ?", [$id]); // parameterized
Suggested Fix Priority
[Critical] Hardcoded Stripe live secret key
[High] display_errors enabled
[High] Hardcoded credential
[High] Hardcoded credential
[High] Empty catch block
Compliance & Standards
Indicative mapping to support audits — not a certification. Findings are mapped from their CWE/OWASP tags.
OWASP Top 10 (2021) coverage
Category
Findings
Status
A01 Broken Access Control
1
Issues found
A02 Cryptographic Failures
0
No issues detected
A03 Injection
11
Issues found
A04 Insecure Design
0
Not assessed
A05 Security Misconfiguration
3
Issues found
A06 Vulnerable and Outdated Components
0
No issues detected
A07 Identification and Authentication Failures
3
Issues found
A08 Software and Data Integrity Failures
1
Issues found
A09 Security Logging and Monitoring Failures
1
Issues found
A10 Server-Side Request Forgery (SSRF)
1
Issues found
PCI-DSS & ISO/IEC 27001 mapping
Area
OWASP
PCI-DSS
ISO 27001
Status
Access control
A01
Req 7 — Restrict access by need-to-know
A.8.3 Information access restriction
Action needed (1)
Cryptography
A02
Req 3 & 4 — Protect stored & transmitted data
A.8.24 Use of cryptography
OK
Injection
A03
Req 6.2.4 — Prevent injection flaws
A.8.28 Secure coding
Action needed (11)
Configuration
A05
Req 2.2 — Secure system configuration
A.8.9 Configuration management
Action needed (3)
Dependencies
A06
Req 6.3.3 — Patch known vulnerabilities
A.8.8 Mgmt of technical vulnerabilities
OK
Authentication
A07
Req 8 — Identify & authenticate access
A.5.17 Authentication information
Action needed (3)
Data integrity
A08
Req 6.5 — Change & integrity control
A.8.28 Secure coding
Action needed (1)
Logging
A09
Req 10 — Log & monitor all access
A.8.15 Logging
Action needed (1)
SSRF
A10
Req 6.2.4 — Secure coding practices
A.8.28 Secure coding
Action needed (1)
CWE breakdown
CWE
Findings
CWE-20
7
CWE-798
3
CWE-89
3
CWE-209
2
CWE-22
1
CWE-295
1
CWE-502
1
CWE-755
1
CWE-79
1
CWE-918
1
Project Structure
Category
Count
Config
2
Controllers
2
Services
1
Models
1
Observer Pro — deeper, framework-aware security
You're on the free edition. Pro's premium rule packs add framework-specific security rules — Laravel, CodeIgniter, WordPress, Symfony, Django, Rails, Spring & Express — layered on top of everything in this report.
Get Observer Pro →Launch offer: use code LAUNCH25 for 25% off (first 25 buyers).