15 lines
896 B
JSON
15 lines
896 B
JSON
{
|
|
"feature_id": "F-150",
|
|
"agent": "security",
|
|
"stage": "security_gate",
|
|
"verdict": "APPROVED",
|
|
"summary": "CSV export requires REPORTING_EXPORT permission (admin/editor only). No new auth paths; uses same auth as other reporting endpoints. No user input in CSV content (data from DB only). Streaming prevents memory overload.",
|
|
"checks": [
|
|
{"item": "RBAC enforced", "ok": true, "evidence": "requireReportingPermission('REPORTING_EXPORT') on export route; admin+editor only"},
|
|
{"item": "No new auth", "ok": true, "evidence": "Same authenticate() as other reporting endpoints"},
|
|
{"item": "No user input in output", "ok": true, "evidence": "All CSV data from DB columns; filters are validated via reportingFiltersSchema (Zod)"},
|
|
{"item": "Streaming prevents memory", "ok": true, "evidence": "500 rows/page; max 10k rows; reply.raw.write per batch"}
|
|
],
|
|
"issues": []
|
|
}
|