forked from Mike/freno-dev
- Convert simpleDeleteImage, deleteImage, getPreSignedURL, listAttachments from publicProcedure to csrfProtectedProcedure - Add S3 type allowlist validation to prevent path traversal - Sanitize title/filename inputs for S3 key construction - Add ownership checks on delete operations - Remove hashPassword/checkPassword procedures (bcrypt internals) - Add regression tests for sanitization and validation Fixes: p8-001 (anonymous S3 deletion), p8-008 (public presigned URL with unsanitized type)