Secure WordPress login with Two Factor Authentication - supports WP, Woo + other login forms, HOTP, TOTP (Google Authenticator, Authy, etc.)
Category Scores
Top Issues by Category
security144
maintainability89
Issues Details
247 issues found in latest scan
All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"$name</label><br>\n"'.
Detected usage of a non-sanitized input variable: $_COOKIE['simbatfa_trust_token']
$_COOKIE['simbatfa_trust_token'] not unslashed before sanitization. Use wp_unslash() or similar
Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$calc".
Function "get_main_site_id()" requires WordPress 4.9.0, but your plugin minimum supported version is WordPress 3.4.0.
All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.
Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().
Detected usage of a possibly undefined superglobal array index: $_SERVER['HTTP_HOST']. Check that the array index exists before using it.
error_log() found. Debug code should not normally be used in production.
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.
Processing form data without nonce verification.
In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header.
Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "secure_auth_cookie".
Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "Base32".
Processing form data without nonce verification.
PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;
Use of heredoc syntax (<<<) is not allowed; use standard strings or inline HTML instead
Unescaped parameter $sql used in $wpdb->get_results()\n$sql assigned unsafely at line 675.
Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "TFA_INCORRECT_ATTEMPTS_WITHIN_MINUTES_LIMIT".
Sanitization missing for register_setting().
Unsupported placeholder used in $wpdb->prepare(). Found: "%_capabilities".
set_error_handler() found. Debug code should not normally be used in production.
trigger_error() found. Debug code should not normally be used in production.
| Code | Type | Message | Count |
|---|---|---|---|
| WordPress.Security.EscapeOutput.OutputNotEscaped | ERROR | All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"$name</label><br>\n"'. | 55 |
| WordPress.Security.ValidatedSanitizedInput.InputNotSanitized | WARNING | Detected usage of a non-sanitized input variable: $_COOKIE['simbatfa_trust_token'] | 25 |
| WordPress.Security.ValidatedSanitizedInput.MissingUnslash | WARNING | $_COOKIE['simbatfa_trust_token'] not unslashed before sanitization. Use wp_unslash() or similar | 25 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound | WARNING | Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$calc". | 24 |
| wp_function_not_compatible_with_requires_wp | ERROR | Function "get_main_site_id()" requires WordPress 4.9.0, but your plugin minimum supported version is WordPress 3.4.0. | 17 |
| WordPress.Security.EscapeOutput.UnsafePrintingFunction | ERROR | All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'. | 12 |
| WordPress.DB.DirectDatabaseQuery.DirectQuery | WARNING | Use of a direct database call is discouraged. | 9 |
| WordPress.DB.DirectDatabaseQuery.NoCaching | WARNING | Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete(). | 9 |
| WordPress.Security.ValidatedSanitizedInput.InputNotValidated | WARNING | Detected usage of a possibly undefined superglobal array index: $_SERVER['HTTP_HOST']. Check that the array index exists before using it. | 9 |
| WordPress.PHP.DevelopmentFunctions.error_log_error_log | WARNING | error_log() found. Debug code should not normally be used in production. | 8 |
| WordPress.WP.I18n.MissingTranslatorsComment | ERROR | 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. | 7 |
| WordPress.Security.NonceVerification.Recommended | WARNING | Processing form data without nonce verification. | 6 |
| WordPress.WP.EnqueuedResourceParameters.NotInFooter | WARNING | In footer ($in_footer) is not set explicitly wp_enqueue_script; It is recommended to load scripts in the footer. Please set this value to `true` to load it in the footer, or explicitly `false` if it should be loaded in the header. | 6 |
| WordPress.DB.PreparedSQL.NotPrepared | ERROR | Use placeholders and $wpdb->prepare(); found $query | 5 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound | WARNING | Hook names invoked by a theme/plugin should start with the theme/plugin prefix. Found: "secure_auth_cookie". | 4 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedClassFound | WARNING | Classes declared by a theme/plugin should start with the theme/plugin prefix. Found: "Base32". | 3 |
| WordPress.Security.NonceVerification.Missing | WARNING | Processing form data without nonce verification. | 3 |
| missing_direct_file_access_protection | ERROR | PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit; | 3 |
| PluginCheck.CodeAnalysis.Heredoc.NotAllowed | ERROR | Use of heredoc syntax (<<<) is not allowed; use standard strings or inline HTML instead | 2 |
| PluginCheck.Security.DirectDB.UnescapedDBParameter | ERROR | Unescaped parameter $sql used in $wpdb->get_results()\n$sql assigned unsafely at line 675. | 2 |
| WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound | WARNING | Global constants defined by a theme/plugin should start with the theme/plugin prefix. Found: "TFA_INCORRECT_ATTEMPTS_WITHIN_MINUTES_LIMIT". | 2 |
| PluginCheck.CodeAnalysis.SettingSanitization.register_settingMissing | ERROR | Sanitization missing for register_setting(). | 1 |
| WordPress.DB.PreparedSQLPlaceholders.UnsupportedPlaceholder | ERROR | Unsupported placeholder used in $wpdb->prepare(). Found: "%_capabilities". | 1 |
| WordPress.PHP.DevelopmentFunctions.error_log_set_error_handler | WARNING | set_error_handler() found. Debug code should not normally be used in production. | 1 |
| WordPress.PHP.DevelopmentFunctions.error_log_trigger_error | WARNING | trigger_error() found. Debug code should not normally be used in production. | 1 |
Latest Snapshot
Findings
247
Errors
108
Warnings
139
Score History
First score snapshot
First scan completed Jun 20, 2026
v1.16.0 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2
Jun 20, 2026
v1.16.0
35
Latest
- Findings
- 247
- Errors
- 108
- Warnings
- 139
- Plugin Check
- 2.0.0
- Model
- 2026.06-mvp-static-v2
| Scan | Score | Findings | Errors | Warnings | Plugin | Plugin Check | Model |
|---|---|---|---|---|---|---|---|
| Jun 20, 2026Latest | 35 | 247 | 108 | 139 | v1.16.0 | 2.0.0 | 2026.06-mvp-static-v2 |