f983269f93
- upload_attachment.php: derive stored file extension from validated MIME type instead of user-supplied filename, preventing executable extension attacks (e.g. a PHP file renamed to evil.txt would now be stored as .txt) - CustomFieldModel.php: fix bind_param type string in updateDefinition() 'sssssiiiii' (10 chars) → 'sssssiiii' (9 chars) to match 9 SQL placeholders - RateLimitMiddleware.php: replace MD5 with SHA256 for rate limit file hashing - user_preferences.php: add httponly, secure, samesite=Lax flags to ticketsPerPage cookie to prevent XSS/CSRF cookie theft Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>