Reading list Switch to dark mode

    How to Handle Security Threats in WordPress Plugin

    Updated 28 February 2023

    WordPress Plugins Security: Protecting Your Website with Code

    WordPress plugins are a great way to extend the functionality of your website, but they can also pose security risks if not properly secured. In this blog post, we will discuss some of the most common security issues faced by WordPress plugins and provide coding examples to tackle them.

    Cross-Site Scripting (XSS)

    Cross-site scripting (XSS) attacks are a common security issue faced by WordPress plugins. These attacks involve injecting malicious code into a website’s pages, which can then be used to steal sensitive information or perform other malicious actions. Here is an example of code that can be used to sanitize plugin input:

    function sanitize_plugin_input($input) {
        $input = trim($input);
        $input = strip_tags($input);
        $input = htmlspecialchars($input);
        return $input;
    }

    This code uses various PHP functions to sanitize user input, removing any tags or special characters that could be used for malicious purposes

    SQL Injection

    SQL injection attacks are another common security issue faced by WordPress plugins. These attacks involve injecting malicious SQL code into a website’s database, which can then be used to steal sensitive information or perform other malicious actions. Here is an example of code that can be used to prevent SQL injection attacks:

    function sanitize_plugin_database_input($input) {
        global $wpdb;
        $input = trim($input);
        $input = $wpdb->prepare($input);
        return $input;
    }

    This code uses the WordPress database class to prepare SQL statements, preventing malicious code from being injected into the database.

    Start your headless eCommerce
    now.
    Find out More

    Arbitrary File Uploads

    Arbitrary file uploads are a common security issue faced by WordPress plugins. These attacks involve allowing users to upload files to a website, which can then be used to execute malicious code or steal sensitive information. Here is an example of code that can be used to prevent arbitrary file uploads:

    function my_plugin_upload_filetypes($filetypes) {
        $filetypes['svg'] = 'image/svg+xml';
        return $filetypes;
    }
    add_filter('upload_mimes', 'my_plugin_upload_filetypes', 1, 1);

    This code uses the upload_mimes filter to allow only specific file types to be uploaded. In this example, SVG files are allowed, but all other file types are blocked.

    In conclusion, WordPress plugins security is a critical aspect of website management. By using code to tackle common security issues such as XSS, SQL injection, and arbitrary file uploads, you can help protect your website from potential security threats.

    Nonce attack

    One of the most common types of attacks is called a “nonce attack“. Nonce stands for “number used once” and is a security feature used to prevent attacks that rely on reusing data that has already been used.

    In WordPress, nonce verification is used to prevent unauthorized access to sensitive data, such as user information or settings. It generates a unique code for each form or request, which must be included in the request for it to be accepted. This way, even if an attacker intercepts a request and tries to reuse it, they won’t be able to because the nonce code will have expired.

    Here’s an example of how nonce verification works in WordPress:

    Let’s say you have a plugin that allows users to submit a form on your website. The form collects sensitive information, such as the user’s email address and password. To prevent unauthorized access, you would use nonce verification to generate a unique code for each form submission.

    First, you would generate a nonce code using WordPress’s built-in function wp_create_nonce():

    $nonce = wp_create_nonce( 'my_plugin_form_submission' );

    This generates a unique code for the form submission, based on the current user’s session ID and the current time. The my_plugin_form_submission is a unique identifier for your form, which helps ensure that the nonce code can only be used for that specific form.

    Next, you would include the nonce code in the form submission, using a hidden input field

    <input type="hidden" name="my_plugin_form_submission_nonce" value="<?php echo $nonce; ?>" />

    When the user submits the form, the nonce code is included in the request. You can then verify the nonce code using WordPress’s wp_verify_nonce() function:

    if ( ! isset( $_POST['my_plugin_form_submission_nonce'] ) || ! wp_verify_nonce( $_POST['my_plugin_form_submission_nonce'], 'my_plugin_form_submission' ) ) {
       // The nonce verification failed, so the form submission is not accepted.
       // Handle the error here, such as displaying an error message to the user.
    } else {
       // The nonce verification succeeded, so the form submission is accepted.
       // Process the form data here, such as saving it to a database or sending an email.
    }

    This checks that the nonce code is included in the request and is valid for the specific form. If the verification fails, the form submission is rejected and an error message is displayed to the user. If the verification succeeds, the form data is processed as usual.

    By using nonce verification in WordPress, you can prevent unauthorized access to sensitive data and improve the security of your website.

    File access : Permission folder 755, file 644

    In WordPress, file permissions are important for controlling access to files and folders on the server.

    For folders, the standard permission is 755, which means that the owner of the file can read, write, and execute the files in the folder. Other users can only read and execute files in the folder.

    For files, the standard permission is 644, which means that the owner of the file can read and write to the file, but other users can only read the file.

    These permissions are usually set by the server administrator or by the FTP client you use to upload files to your server. It’s important to set the correct permissions for each file and folder in your WordPress installation, as incorrect permissions can lead to security vulnerabilities or errors when accessing files.

    In summary, the recommended permissions for a WordPress installation are 755 for folders and 644 for files.

    How to set Permission folder 755, file 644 in wordpress ?

    To set the permissions for your WordPress installation, you can use an FTP client such as FileZilla. Here are the steps to set the folder permission to 755 and file permission to 644:

    1. Connect to your server using an FTP client.
    2. Navigate to the folder or file that you want to change the permissions for.
    3. Right-click on the folder or file and select “File Permissions” (or “Properties” in some FTP clients).
    4. In the “Numeric value” field, enter the permission value for the folder or file. For folders, enter 755. For files, enter 644.
    5. Check the “Recurse into subdirectories” box to apply the permissions to all subdirectories and files within the folder.
    6. Click “OK” or “Apply” to save the changes.

    Alternatively, you can also use the command line interface (CLI) to set the permissions. Here are the commands you can use:

    To set folder permissions to 755:

    chmod -R 755 /path/to/folder/

    To set file permissions to 644:

    chmod 644 /path/to/file

    Make sure to replace /path/to/folder/ and /path/to/file with the actual path to the folder or file on your server. The -R option in the folder command will apply the permissions recursively to all files and sub directories within the folder.

    FS_METHOD : Security aspect of configuration constant.

    FS_METHOD is a configuration constant in WordPress that defines the method that should be used for file system operations such as installing plugins, themes, or updating WordPress core files

    There are three possible values for FS_METHOD:

    • “direct” – This method uses direct file system access, where WordPress directly writes to the files on the server. This method requires the file system permissions to be set correctly and may not work on some hosts.
    • “ftpext” – This method uses PHP’s FTP extension to access the file system. This method requires FTP credentials to be entered, and it can be slower than the direct method.
    • “ssh2” – This method uses PHP’s SSH2 extension to access the file system. This method requires SSH credentials to be entered and can be faster and more secure than the FTP method.

    By default, WordPress uses the “direct” method, but this can be overridden by adding a line of code to the wp-config.php file. Here is an example of how to set the FS_METHOD constant to “ftpext”:

    define('FS_METHOD', 'ftpext');
    define('FTP_HOST', 'ftp.example.com');
    define('FTP_USER', 'your-ftp-username');
    define('FTP_PASS', 'your-ftp-password');

    This code sets the FS_METHOD constant to “ftpext” and provides the FTP host, username, and password required for WordPress to connect.

    Hiding ‘Add Plugin’ menu for Security aspect in WordPress

    Hiding the “Add Plugin” feature in WordPress can be useful for security purposes, as it prevents unauthorized users from installing potentially dangerous plugins on your website. Here’s an example of how you can hide the “Add Plugin” feature in WordPress:

    1. Open your functions.php file

    The first step is to open the functions.php file of your WordPress theme. You can access this file by going to Appearance > Theme Editor in the WordPress dashboard, then selecting functions.php from the list of theme files on the right-hand side.

    1. Add the following code

    Once you have opened the functions.php file, add the following code at the end of the file:

    function remove_plugins_menu() {
        remove_menu_page( 'plugins.php' );
    }
    add_action( 'admin_menu', 'remove_plugins_menu' );

    This code uses the remove_menu_page() function to remove the “Plugins” menu from the WordPress dashboard. This prevents unauthorized users from accessing the “Add Plugin” feature.

    • 3 Save your changes

    After adding the code to your functions.php file, save your changes and check the WordPress dashboard. The “Plugins” menu should no longer be visible in the WordPress dashboard.

    Note: It is important to keep in mind that hiding the “Add Plugin” feature in WordPress may not be suitable for all websites. If you have multiple users who need to install plugins, or if you frequently need to install new plugins yourself, then hiding this feature may not be practical. However, if you want to limit access to the “Add Plugin” feature for security reasons, then this code snippet can be a helpful solution.


    In conclusion, security is a crucial aspect of any website, and it’s important to take the necessary measures to protect your website and your users. By following best practices such as using strong passwords, keeping your software and plugins up-to-date, and implementing security features such as nonce verification, you can significantly reduce the risk of security attacks. Additionally, it’s important to stay informed about new security threats and to regularly monitor your website for any signs of suspicious activity. By being proactive about security, you can help ensure the safety and integrity of your website and provide a positive experience for your users.

    Current Product Version - 1.0.0

    Supported Framework Version - 1.0.0

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home