WordPress makes it possible to edit theme and plugin files directly in the Administration Screens. While it may look like an easy way to customize a theme or do a quick change, it’s a dangerous feature. When visiting the theme or plugin editor for the first time, WordPress displays a warning to make it clear that using such a feature may break the web site by mistake. More importantly, users who have access to this feature can trigger the execution of any PHP code and may therefore take full control of the WordPress instance. This security risk could be exploited by an attacker who manages to get access to one of the authorized users. Setting the `DISALLOW_FILE_EDIT` option to `true` in `wp-config.php` disables this risky feature. The default value is `false`.

## Ask Yourself Whether

- You really need to use the theme and plugin editors.
- The theme and plugin editors are available to users who cannot be fully trusted.
- There’s a chance that the accounts of authorized users get compromised.

There is a risk if you answered yes to any of those questions.

## Recommended Secure Coding Practices

- Modify the theme and plugin files using a local editor and deploy them to the server in a secure way.
- Make sure that `DISALLOW_FILE_EDIT` is defined in `wp-config.php`.
- Make sure that `DISALLOW_FILE_EDIT` is set to `true`.

## Sensitive Code Example

    define( 'DISALLOW_FILE_EDIT', false ); // Sensitive

## Compliant Solution

    define( 'DISALLOW_FILE_EDIT', true );

## See

- OWASP - Top 10 2021 Category A3 - Injection
- OWASP - Top 10 2021 Category A4 - Insecure Design
- OWASP - Top 10 2021 Category A5 - Security Misconfiguration
- wordpress.org - Disable the Plugin and Theme Editor
- OWASP - Top 10 2017 Category A1 - Injection
- OWASP - Top 10 2017 Category A6 - Security Misconfiguration
- OWASP - Top 10 2017 Category A7 - Cross-Site Scripting (XSS)
- CWE - CWE-79 - Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
- CWE - CWE-94 - Improper Control of Generation of Code ('Code Injection')
- CWE - CWE-95 - Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')