This security plugin helps you quickly audit, harden, and secure your WordPress website.
Prioritized issue groups from the latest Plugin Check scan
Security
152
12 issue groups
I18n
108
4 issue groups
Maintainability
89
9 issue groups
Sample message
A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.
Sample message
Processing form data without nonce verification.
Sample message
Use of a direct database call is discouraged.
Sample message
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
Sample message
date() is affected by runtime timezone changes which can cause date/time to be incorrectly displayed. Use gmdate() instead.
Sample message
$_POST['ip'] not unslashed before sanitization. Use wp_unslash() or similar
Sample message
Use placeholders and $wpdb->prepare(); found $query
Sample message
The %i modifier is only supported in WP 6.2 or higher. Found: "%i".
Sample message
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$enctype'.
Sample message
Processing form data without nonce verification.
Sample message
Incorrect number of replacements passed to $wpdb->prepare(). Found 1 replacement parameters, expected 11.
Sample message
Detected usage of a non-sanitized input variable: $_FILES['import-file']
Sample message
File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: chmod().
Sample message
Multiple placeholders in translatable strings should be ordered. Expected "%1$s, %2$s", but got "%s, %s" in '%s: All content policies are disabled. You can enable them at the top of <a href="%s">Content Settings</a>.'.
Sample message
Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "DONOTCACHEDB".
Sample message
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$Janitor".
Sample message
Use placeholders and $wpdb->prepare(); found interpolated variable $ids at "DELETE FROM $table WHERE ID IN ( $ids )"
Sample message
Detected usage of a possibly undefined superglobal array index: $_FILES['import-file']. Check that the array index exists before using it.
Sample message
Scripts must be registered/enqueued via wp_enqueue_script()
Sample message
Translatable string should not be wrapped in HTML. Found: '<i>NOTICE: Files which cannot be modified are hidden. <a href="%s" style="text-decoration: underline;">Show all files</a>.</i>'
Sample message
load_plugin_textdomain() has been discouraged since WordPress version 4.6. When your plugin is hosted on WordPress.org, you no longer need to manually include this function call for translations under your plugin slug. WordPress will automatically load the translations for you as needed.
Sample message
Unescaped parameter $table used in $wpdb->query()\n$table assigned unsafely at line 209.
Sample message
Unescaped parameter $query used in $wpdb->get_results()\n$query assigned unsafely at line 162.
Sample message
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "security_safe_loaded".
Sample message
Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "$slug".
Potential connections found in static code analysis.
Outbound calls
207
External assets
3
Incoming endpoints
3
No external asset domains detected.
No public endpoints detected.
admin_post
wp_ajax
wp_ajax
First score snapshot
v3.0.1
34
Latest
| Scan | Score | Findings | Errors | Warnings | Plugin | Check |
|---|---|---|---|---|---|---|
| Latest | 34 | 357 | 193 | 164 | v3.0.1 | 2.0.0 |
Author, categories, issues, domains, and nearby plugins.