Skip to main content
PluginScorePluginScore
Errors
PluginScore — Plugin Analyzer for WordPress
© 2025 PluginScore.
← Back to Leaderboard
xo-security icon

XO Security

XO Security is a plugin to enhance login related security.

Updated 4/19/2025
Scanned 11/13/2025, 5:27:03 AM
brute-forceloginmaintenancesecuritytwo-factor
98
Score
4
Errors
3
Warnings
30K
Installs
Security2
General3
Repo2
Performance0
Accessibility0
Top Issues by Category
Issues organized by category, type, and rule family

Issues Details
7 issues found in latest scan
CodeMessageLocationCategory
ERRORPluginCheck.CodeAnalysis.DiscouragedFunctions.load_plugin_textdomainFound
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.
40:3Plugin Repo
ERRORWordPress.WP.I18n.MissingArgDomain
Missing $domain parameter in function call to __().
457:39General
ERRORWordPress.WP.I18n.MissingArgDomain
Missing $domain parameter in function call to __().
471:32General
ERRORWordPress.WP.I18n.MissingArgDomain
Missing $domain parameter in function call to esc_attr_e().
294:126General
WARNINGplugin_header_nonexistent_domain_path
The "Domain Path" header in the plugin file must point to an existing folder. Found: "languages"
—Plugin Repo
WARNINGPluginCheck.Security.DirectDB.UnescapedDBParameter
Unescaped parameter $where used in $wpdb->get_var("SELECT count(*) FROM {$wpdb->prefix}xo_security_loginlog {$where}")
237:33Security
WARNINGPluginCheck.Security.DirectDB.UnescapedDBParameter
Unescaped parameter $where used in $wpdb->get_results($wpdb->prepare(\n\t\t\t\t"SELECT id,success,login_time,ip_address,login_type,lang,user_agent,user_name FROM {$wpdb->prefix}xo_security_loginlog {$where} ORDER BY {$orderby} {$order} LIMIT %d, %d;", \t\t\t\t$start,\n\t\t\t\t$per_page\n\t\t\t))\n$orderby assigned unsafely at line 252:\n $orderby = 'login_time'\n$order assigned unsafely at line 255:\n $order = ( isset( $_REQUEST['order'] ) && 'asc' === $_REQUEST['order'] ) ? 'ASC' : 'DESC'\n$start assigned unsafely at line 257:\n $start = ( $this->get_pagenum() - 1 ) * $per_page
259:18Security
7 total row(s)
Scan History
1 scan recorded
11/13/2025, 5:27:03 AM14s
98
4
3
1 total row(s)