Introduction
Basic Concepts
Understanding Routing
Controllers
Views
Assets
Modules Calling Modules
Parent & Child Modules
Database Operations
Modules within Modules
Templates & Themes
Helpers Explained
Form Handling
Working with Files
The Module Import Wizard
Authorization & Authentication
The API Explorer
If you’ve found an error, spotted something missing, or feel a section could be clearer or better explained, we’d love to hear from you. Your feedback helps keep the documentation accurate and useful for everyone.
Please report issues or suggest improvements on GitHub. Community input is invaluable in making the docs stronger.
Not comfortable with GitHub? No problem — you can also get in touch with us directly via our contact form. We welcome all feedback.
Securing File Uploads
Built-in Security Features
Trongate provides a comprehensive suite of security features designed to ensure that file uploads are handled safely and efficiently.
File Validation
Trongate's Validation class offers extensive control over allowed file types and characteristics. For example:
Trongate implements several security measures during file validation, including:
- MIME type verification using PHP's finfo_file()
- Automatic path traversal protection to prevent directory manipulation
- Built-in protection against upload-based PHP code execution
- Automatic file extension normalization and validation
- Content scanning to detect potential security threats in the file
File Upload Settings
Settings pertaining to upload behavior can be declared inside modules. The framework includes several built-in protections, such as:
- Automatic validation of upload destinations for proper permissions and security
- Prevention of uploads to restricted system directories
- Memory usage monitoring for safe image processing
- Secure file naming system that prevents naming conflicts
Example settings configuration:
Framework Philosophy
Trongate's approach to file uploading is designed to provide essential security features out of the box while allowing flexibility for additional measures. The framework emphasizes:
- Robust security features to protect against common vulnerabilities
- Efficient and maintainable core implementation
- Flexibility to extend and customize security measures as needed
Example Implementation
Here's a typical implementation:
Making Security Decisions
When evaluating if you need additional security measures, consider:
- Who can upload files?
- What types of files are allowed?
- How sensitive is your application?
- What are the consequences of a malicious upload?
Based on these answers, you can determine if Trongate's built-in features are sufficient or if you need additional security measures.