18 lines
1.3 KiB
JSON
18 lines
1.3 KiB
JSON
{
|
|
"feature_id": "F-017",
|
|
"agent": "security",
|
|
"verdict": "APPROVED",
|
|
"summary": "Security approved. No new dependencies or committed secrets were introduced. Price mutations require admin authentication, request input is validated with zod, SQL uses parameterized queries, and client-supplied price/tax totals are stripped and ignored by calculation.",
|
|
"evidence": [
|
|
"cd project && npm audit --audit-level=high --omit=dev: found 0 vulnerabilities",
|
|
"Secret scan over project/src/modules/pricing, project/migrations/012_pricing.js and project/src/app/tests/pricing.itest.ts found only a test fixture password, no committed credentials",
|
|
"Reviewed pricing routes: PUT /pricing/variants/:variantId requires authenticated admin role; calculate route accepts only variantId and quantity",
|
|
"Reviewed validation: variantId is z.uuid(); amounts and quantities are integer-bounded; VAT rate is enum general/reduced",
|
|
"Reviewed calculate schema: `.strip()` removes client-supplied totals/prices before service calculation",
|
|
"Reviewed repository SQL: all dynamic values are parameterized; no user input is interpolated into SQL text",
|
|
"Reviewed migration: CHECK constraints enforce non-negative amounts, allowed VAT rates, and EUR-only currency",
|
|
"No new runtime dependency added"
|
|
],
|
|
"timestamp": "2026-08-15T16:24:35Z"
|
|
}
|