[FEAT] #384 p.5 — allegati file su Policy (sezione Allegati nel dettaglio) + allowlist server-side upload evidenze
- policies.html: sezione 'Allegati' nel dettaglio policy (Bootstrap Italia card), upload (entity_type=policy) via /api/audit/evidence/upload, lista con download/autore/data - AuditController::uploadEvidence: allowlist estensioni server-side (anti stored-XSS same-origin) - version.json -> 1.23.5 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6f3ca4b4bd
commit
8a8045904b
@@ -64,6 +64,14 @@ class AuditController extends BaseController
|
||||
$this->jsonError('File troppo grande (max 10MB)', 400, 'FILE_TOO_LARGE');
|
||||
}
|
||||
|
||||
// Allowlist estensioni (anti stored-XSS same-origin: niente html/svg/js eseguibili).
|
||||
// Allineata a StakeholderPortalController::ALLOWED_EXT.
|
||||
$allowedExt = ['pdf','png','jpg','jpeg','gif','webp','txt','csv','xlsx','xls','docx','doc','pptx','ppt','odt','ods','zip'];
|
||||
$extCheck = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
|
||||
if ($extCheck === '' || !in_array($extCheck, $allowedExt, true)) {
|
||||
$this->jsonError('Tipo di file non consentito. Formati ammessi: PDF, immagini, documenti Office, txt, csv, zip.', 422, 'BAD_FILE_TYPE');
|
||||
}
|
||||
|
||||
$orgId = $this->getCurrentOrgId();
|
||||
$uploadDir = UPLOAD_PATH . "/evidence/{$orgId}";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user