Lord of the Files
WordPress relies mostly on name-based validation when deciding whether or not to allow a particular file, leaving the door open for various kinds of attacks.
Lord of the Files adds to this content-based validation and sanitizing, making sure that files are what they say they are and safe for inclusion on your site.
The main features include:
- Robust real filetype detection;
- Full MIME alias mapping;
- SVG sanitization (if SVG uploads have been independently allowed);
- File upload validation debugger;
- Fixes issues related to #40175 that have been present since WordPress
4.7.1
. - Fixes ambiguous media extensions #40921
Requirements
- WordPress 5.2 or later.
- PHP 7.2 or later.
dom
PHP extension.fileinfo
PHP extension.mbstring
PHP extension.xml
PHP extension.
FAQ
Does this require any theme or config changes?
This plugin is intended to be an activate-and-forget sort of affair for most users. All features are enabled by default.
But if you're a developer or system administrator, you might take a peek at Tools > File Validation Reference
for a list of public filters you can hook into to change things up, and Settings > File Settings
for global configuration overrides.
This has mostly helped but I am still having trouble with one file…
While this plugin extends MIME alias handling more than 20-fold(!), we are still busy tracking down all the edge cases.
Please go to Tools > Debug File Validation
and post the output from that page into a new support ticket for this plugin.
We'll gladly see if we can cook up a fix or workaround!
Does this plugin enable SVG support?
No. This plugin does not modify your site's allowed upload types (see e.g. upload_mimes for that). However if SVGs are otherwise enabled for your site, this plugin will sanitize them at the upload stage to make sure they do not contain any dangerous exploits.
There are a number of SVG-related filters that can be used to modify the sanitization behavior. Take a look at Tools > File Validation Reference
for more information.
If you find the filters too aggressive, add const LOTF_NO_SANITIZE_SVGS = true;
to your wp-config.php
to disable the extra sanitizing.