30 lines
1.5 KiB
JSON
30 lines
1.5 KiB
JSON
{
|
|
"feature_id": "F-186",
|
|
"agent": "security",
|
|
"stage": "security_gate",
|
|
"verdict": "APPROVED",
|
|
"checks": [
|
|
{ "item": "Admin configuration endpoints require admin role", "ok": true },
|
|
{ "item": "Sale and receipt endpoints require authenticated POS roles", "ok": true },
|
|
{ "item": "Bound terminal header must match sale terminal/session", "ok": true },
|
|
{ "item": "Non-admin receipt reads/email are scoped to the originating terminal", "ok": true },
|
|
{ "item": "Catalog price/name/SKU and enabled payment methods are server-authoritative", "ok": true },
|
|
{ "item": "All new SQL uses bound parameters and transactional row locks", "ok": true },
|
|
{ "item": "Receipt email validates destination and uses fixed generated content", "ok": true },
|
|
{ "item": "No PAN, processor credentials or arbitrary provider payload accepted", "ok": true },
|
|
{ "item": "POS cashier passwords use Argon2 and backoffice identity storage", "ok": true },
|
|
{ "item": "Secret scan of changed diff", "ok": true },
|
|
{ "item": "Production dependency audit: backend, POS and admin", "ok": true }
|
|
],
|
|
"dependency_audit": {
|
|
"backend": "0 vulnerabilities",
|
|
"pos": "0 vulnerabilities",
|
|
"admin": "0 vulnerabilities"
|
|
},
|
|
"issues": [],
|
|
"notes": [
|
|
"Review is scoped to F-186 endpoints in the legacy monolithic POS route file; unrelated historical placeholder endpoints require separate hardening.",
|
|
"External card/Bizum/Stripe/Apple Pay processing remains out of scope; labels only, so no PCI card data is handled."
|
|
]
|
|
}
|