Guard Dog Security & Risk Analysis

wordpress.org/plugins/guard-dog

Comprehensive WordPress security plugin with custom login URLs, two-factor authentication, social login (OAuth), CAPTCHA protection, event and activit …

20 active installs v1.9.36 PHP 8.1+ WP 5.9+ Updated Mar 13, 2026
2faauthenticationcaptchaprotectionsecurity
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is Guard Dog Safe to Use in 2026?

Generally Safe

Score 100/100

Guard Dog has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 22d ago
Risk Assessment

The Guard-Dog v1.9.36 plugin exhibits a generally strong security posture with several positive indicators. A high percentage of SQL queries use prepared statements, and output escaping is almost universally handled correctly. The plugin also demonstrates a good practice of implementing nonce and capability checks, with a substantial number of these present. However, a significant concern lies within the attack surface, particularly the six AJAX handlers that lack authentication checks. This presents a direct entry point for unauthorized actions.

Taint analysis reveals a troubling pattern, with 12 high-severity flows identified as having unsanitized paths. While these haven't yet manifested as publicly known vulnerabilities, this indicates a potential for attackers to manipulate data flow within the plugin, leading to unexpected or malicious behavior. The absence of any recorded vulnerabilities, while positive on the surface, might also suggest a lack of extensive security testing or a relatively new codebase in terms of public exposure, rather than an inherently flawless product.

Overall, Guard-Dog v1.9.36 has strengths in its disciplined coding practices regarding database interactions and output handling. Nevertheless, the unprotected AJAX endpoints and the numerous high-severity taint flows demand immediate attention. Addressing these specific areas is crucial to mitigating potential risks and improving the plugin's overall security robustness.

Key Concerns

  • Unprotected AJAX handlers
  • High severity unsanitized taint flows
Vulnerabilities
None known

Guard Dog Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Code Analysis
Analyzed Mar 16, 2026

Guard Dog Code Analysis

Dangerous Functions
0
Raw SQL Queries
22
270 prepared
Unescaped Output
49
2212 escaped
Nonce Checks
83
Capability Checks
45
File Operations
4
External Requests
14
Bundled Libraries
1

Bundled Libraries

Guzzle

SQL Query Safety

92% prepared292 total queries

Output Escaping

98% escaped2261 total outputs
Data Flows
14 unsanitized

Data Flow Analysis

17 flows14 with unsanitized paths
render_settings_form (includes\admin\pages\class-sessions-page.php:701)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
6 unprotected

Guard Dog Attack Surface

Entry Points50
Unprotected6

AJAX Handlers 49

authwp_ajax_guard_dog_search_usersincludes\admin\class-guard-dog-admin.php:93
authwp_ajax_guard_dog_get_user_suggestionsincludes\admin\class-guard-dog-admin.php:94
authwp_ajax_guard_dog_force_db_updateincludes\admin\class-guard-dog-admin.php:95
authwp_ajax_guard_dog_check_ip_reputationincludes\admin\class-guard-dog-admin.php:96
authwp_ajax_guard_dog_add_ip_to_blacklistincludes\admin\class-guard-dog-admin.php:97
authwp_ajax_guard_dog_remove_ip_from_blacklistincludes\admin\class-guard-dog-admin.php:98
authwp_ajax_guard_dog_add_country_to_blacklistincludes\admin\class-guard-dog-admin.php:99
authwp_ajax_guard_dog_remove_country_from_blacklistincludes\admin\class-guard-dog-admin.php:100
authwp_ajax_guard_dog_trigger_expiration_checkincludes\admin\class-guard-dog-admin.php:101
authwp_ajax_guard_dog_test_email_providerincludes\admin\pages\class-settings-page.php:643
authwp_ajax_guard_dog_google_oauth_startincludes\admin\pages\class-settings-page.php:644
authwp_ajax_guard_dog_google_oauth_callbackincludes\admin\pages\class-settings-page.php:645
authwp_ajax_guard_dog_google_oauth_disconnectincludes\admin\pages\class-settings-page.php:646
authwp_ajax_guard_dog_google_alias_preflightincludes\admin\pages\class-settings-page.php:647
authwp_ajax_guard_dog_google_aliases_listincludes\admin\pages\class-settings-page.php:648
authwp_ajax_guard_dog_send_test_emailincludes\customizer\implementations\class-email-template-customizer.php:2489
authwp_ajax_guard_dog_send_email_2fa_codeincludes\features\class-email-two-factor-auth.php:65
authwp_ajax_guard_dog_verify_email_2fa_codeincludes\features\class-email-two-factor-auth.php:66
authwp_ajax_guard_dog_enable_email_2faincludes\features\class-email-two-factor-auth.php:67
authwp_ajax_guard_dog_disable_email_2faincludes\features\class-email-two-factor-auth.php:68
authwp_ajax_guard_dog_refresh_email_2fa_noncesincludes\features\class-email-two-factor-auth.php:69
noprivwp_ajax_guard_dog_send_email_2fa_codeincludes\features\class-email-two-factor-auth.php:72
authwp_ajax_guard_dog_passkey_register_optionsincludes\features\class-passkeys.php:219
authwp_ajax_guard_dog_passkey_register_verifyincludes\features\class-passkeys.php:220
authwp_ajax_guard_dog_passkey_deleteincludes\features\class-passkeys.php:221
authwp_ajax_guard_dog_passkey_renameincludes\features\class-passkeys.php:222
noprivwp_ajax_guard_dog_passkey_auth_optionsincludes\features\class-passkeys.php:225
noprivwp_ajax_guard_dog_passkey_auth_verifyincludes\features\class-passkeys.php:226
authwp_ajax_guard_dog_passkey_auth_optionsincludes\features\class-passkeys.php:227
authwp_ajax_guard_dog_passkey_auth_verifyincludes\features\class-passkeys.php:228
authwp_ajax_guard_dog_validate_passwordincludes\features\class-password-policy.php:68
noprivwp_ajax_guard_dog_validate_passwordincludes\features\class-password-policy.php:69
authwp_ajax_guard_dog_terminate_sessionincludes\features\class-session-manager.php:172
authwp_ajax_guard_dog_terminate_all_sessionsincludes\features\class-session-manager.php:173
authwp_ajax_guard_dog_get_user_sessionsincludes\features\class-session-manager.php:174
noprivwp_ajax_guard_dog_oauth_initincludes\features\class-social-login.php:99
authwp_ajax_guard_dog_oauth_initincludes\features\class-social-login.php:100
authwp_ajax_guard_dog_oauth_linkincludes\features\class-social-login.php:106
authwp_ajax_guard_dog_oauth_unlinkincludes\features\class-social-login.php:107
authwp_ajax_guard_dog_generate_2fa_secretincludes\features\class-two-factor-auth.php:90
authwp_ajax_guard_dog_verify_2fa_setupincludes\features\class-two-factor-auth.php:91
noprivwp_ajax_guard_dog_setup_generate_secretincludes\features\class-two-factor-auth.php:95
noprivwp_ajax_guard_dog_setup_send_email_codeincludes\features\class-two-factor-auth.php:96
noprivwp_ajax_guard_dog_setup_register_passkey_optionsincludes\features\class-two-factor-auth.php:97
noprivwp_ajax_guard_dog_setup_register_passkey_verifyincludes\features\class-two-factor-auth.php:98
authwp_ajax_guard_dog_view_recovery_codesincludes\features\class-two-factor-auth.php:108
authwp_ajax_guard_dog_regenerate_recovery_codesincludes\features\class-two-factor-auth.php:109
authwp_ajax_guard_dog_disable_2faincludes\features\class-two-factor-auth.php:110
authwp_ajax_guard_dog_refresh_2fa_noncesincludes\features\class-two-factor-auth.php:111

Shortcodes 1

[guard_dog_2fa] includes\features\class-two-factor-auth.php:105
WordPress Hooks 209
actionadmin_post_guard_dog_export_logsguard-dog.php:90
actionadmin_initincludes\admin\class-admin-settings.php:82
filterset-screen-optionincludes\admin\class-admin-settings.php:85
actionadmin_menuincludes\admin\class-admin-settings.php:94
actionadmin_enqueue_scriptsincludes\admin\class-admin-settings.php:95
actionload-guard-dog_page_guard-dog-logsincludes\admin\class-admin-settings.php:96
filterset-screen-optionincludes\admin\class-guard-dog-admin.php:76
filterset_screen_option_guard_dog_activity_logs_per_pageincludes\admin\class-guard-dog-admin.php:77
actionadmin_menuincludes\admin\class-guard-dog-admin.php:79
actionadmin_enqueue_scriptsincludes\admin\class-guard-dog-admin.php:80
actionadmin_initincludes\admin\class-guard-dog-admin.php:81
actionadmin_initincludes\admin\class-guard-dog-admin.php:82
actionadmin_initincludes\admin\class-guard-dog-admin.php:83
actionadmin_initincludes\admin\class-guard-dog-admin.php:84
actionadmin_initincludes\admin\class-guard-dog-admin.php:85
actionadmin_initincludes\admin\class-guard-dog-admin.php:86
actionadmin_initincludes\admin\class-guard-dog-admin.php:87
actionadmin_initincludes\admin\class-guard-dog-admin.php:88
actionadmin_initincludes\admin\class-guard-dog-admin.php:89
actionadmin_noticesincludes\admin\class-guard-dog-admin.php:90
actionupdated_optionincludes\admin\pages\class-captcha-page.php:129
actionadmin_noticesincludes\admin\pages\class-captcha-page.php:132
actionadmin_initincludes\admin\pages\class-login-security-page.php:807
actionadmin_noticesincludes\admin\pages\class-settings-page.php:1788
actionset_logged_in_cookieincludes\class-guard-dog.php:222
actionlogin_initincludes\class-guard-dog.php:228
actionadmin_menuincludes\customizer\class-guard-dog-customizer-loader.php:23
actionadmin_enqueue_scriptsincludes\customizer\class-guard-dog-customizer-loader.php:26
filterauthenticateincludes\features\class-access-control.php:101
actioninitincludes\features\class-access-control.php:105
actioninitincludes\features\class-access-control.php:108
actioninitincludes\features\class-access-control.php:111
actionguard_dog_cleanup_expired_blacklistincludes\features\class-access-control.php:114
actionguard_dog_cleanup_expired_blacklistincludes\features\class-access-control.php:115
actionguard_dog_cleanup_activity_logsincludes\features\class-activity-log.php:192
actionshutdownincludes\features\class-activity-log.php:195
actionwp_loginincludes\features\class-activity-log.php:212
actionwp_login_failedincludes\features\class-activity-log.php:215
actionpassword_resetincludes\features\class-activity-log.php:218
actionuser_registerincludes\features\class-activity-log.php:223
actiondelete_userincludes\features\class-activity-log.php:226
actionprofile_updateincludes\features\class-activity-log.php:229
actionset_user_roleincludes\features\class-activity-log.php:232
actionwp_insert_postincludes\features\class-activity-log.php:237
actionpost_updatedincludes\features\class-activity-log.php:240
actionbefore_delete_postincludes\features\class-activity-log.php:243
actiontransition_post_statusincludes\features\class-activity-log.php:246
actionwp_insert_commentincludes\features\class-activity-log.php:251
actionwp_set_comment_statusincludes\features\class-activity-log.php:254
actionactivated_pluginincludes\features\class-activity-log.php:259
actiondeactivated_pluginincludes\features\class-activity-log.php:262
actionswitch_themeincludes\features\class-activity-log.php:265
action_core_updated_successfullyincludes\features\class-activity-log.php:268
actionupdated_optionincludes\features\class-activity-log.php:273
actionwp_create_nav_menuincludes\features\class-activity-log.php:278
actionwp_update_nav_menuincludes\features\class-activity-log.php:279
actionwp_delete_nav_menuincludes\features\class-activity-log.php:282
actionsidebar_admin_setupincludes\features\class-activity-log.php:287
actionplugins_loadedincludes\features\class-activity-log.php:291
actionwoocommerce_new_productincludes\features\class-activity-log.php:311
actionwoocommerce_update_productincludes\features\class-activity-log.php:314
actionbefore_delete_postincludes\features\class-activity-log.php:317
actionwp_trash_postincludes\features\class-activity-log.php:320
actionuntrashed_postincludes\features\class-activity-log.php:323
actionwoocommerce_product_set_stockincludes\features\class-activity-log.php:326
actionwoocommerce_variation_set_stockincludes\features\class-activity-log.php:327
actionwoocommerce_new_orderincludes\features\class-activity-log.php:332
actionwoocommerce_order_status_changedincludes\features\class-activity-log.php:335
actionbefore_delete_postincludes\features\class-activity-log.php:338
actionwoocommerce_order_refundedincludes\features\class-activity-log.php:341
actionwoocommerce_new_order_noteincludes\features\class-activity-log.php:344
actionwoocommerce_new_couponincludes\features\class-activity-log.php:349
actionwoocommerce_update_couponincludes\features\class-activity-log.php:352
actionbefore_delete_postincludes\features\class-activity-log.php:355
actioncreated_product_catincludes\features\class-activity-log.php:360
actionedited_product_catincludes\features\class-activity-log.php:363
actiondelete_product_catincludes\features\class-activity-log.php:366
actionwoocommerce_settings_savedincludes\features\class-activity-log.php:371
actionwoocommerce_update_optionincludes\features\class-activity-log.php:374
actionwoocommerce_shipping_zone_addedincludes\features\class-activity-log.php:379
actionwoocommerce_shipping_zone_updatedincludes\features\class-activity-log.php:382
actionwoocommerce_delete_shipping_zoneincludes\features\class-activity-log.php:385
actionwoocommerce_tax_rate_addedincludes\features\class-activity-log.php:390
actionwoocommerce_tax_rate_updatedincludes\features\class-activity-log.php:393
actionwoocommerce_tax_rate_deletedincludes\features\class-activity-log.php:396
actionupdated_optionincludes\features\class-activity-log.php:1829
actionlogin_formincludes\features\class-captcha.php:115
actionlogin_headincludes\features\class-captcha.php:118
filterwp_authenticate_userincludes\features\class-captcha.php:121
actionregister_formincludes\features\class-captcha.php:124
actionlogin_headincludes\features\class-captcha.php:127
filterregistration_errorsincludes\features\class-captcha.php:130
actionlostpassword_formincludes\features\class-captcha.php:133
actionlostpassword_postincludes\features\class-captcha.php:136
actionlogin_enqueue_scriptsincludes\features\class-captcha.php:139
actionlogin_enqueue_scriptsincludes\features\class-captcha.php:140
actionwp_enqueue_scriptsincludes\features\class-captcha.php:143
actionwp_enqueue_scriptsincludes\features\class-captcha.php:144
filterpre_wp_mailincludes\features\class-email-provider.php:219
actionpersonal_options_updateincludes\features\class-email-two-factor-auth.php:61
actionedit_user_profile_updateincludes\features\class-email-two-factor-auth.php:62
actionadmin_enqueue_scriptsincludes\features\class-email-two-factor-auth.php:75
actionadmin_noticesincludes\features\class-email-two-factor-auth.php:739
actioninitincludes\features\class-email-verification.php:103
filterwp_send_new_user_notification_to_userincludes\features\class-email-verification.php:106
actionregister_formincludes\features\class-email-verification.php:109
actionregister_postincludes\features\class-email-verification.php:113
actionuser_registerincludes\features\class-email-verification.php:116
actionuser_registerincludes\features\class-email-verification.php:117
filterauthenticateincludes\features\class-email-verification.php:120
filterwp_login_errorsincludes\features\class-email-verification.php:123
actionprofile_updateincludes\features\class-email-verification.php:126
actionadmin_post_guard_dog_verify_emailincludes\features\class-email-verification.php:129
actionadmin_post_nopriv_guard_dog_verify_emailincludes\features\class-email-verification.php:130
actionadmin_post_guard_dog_resend_verificationincludes\features\class-email-verification.php:131
actionadmin_post_nopriv_guard_dog_resend_verificationincludes\features\class-email-verification.php:132
actionadmin_post_guard_dog_admin_verify_userincludes\features\class-email-verification.php:133
filtermanage_users_columnsincludes\features\class-email-verification.php:136
filtermanage_users_custom_columnincludes\features\class-email-verification.php:137
actionregister_new_userincludes\features\class-email-verification.php:175
filterauthenticateincludes\features\class-ip-reputation-checker.php:54
filterwp_authenticate_userincludes\features\class-limit-login-attempts.php:72
actionwp_login_failedincludes\features\class-limit-login-attempts.php:75
actionwp_loginincludes\features\class-limit-login-attempts.php:78
filterlogin_errorsincludes\features\class-limit-login-attempts.php:81
filterauthenticateincludes\features\class-limit-login-attempts.php:84
filterlogin_errorsincludes\features\class-login-errors.php:28
actionplugins_loadedincludes\features\class-login-url.php:48
actionwp_loadedincludes\features\class-login-url.php:49
filterlogin_redirectincludes\features\class-login-url.php:52
filterlogin_urlincludes\features\class-login-url.php:53
filtersite_urlincludes\features\class-login-url.php:54
filternetwork_site_urlincludes\features\class-login-url.php:55
filterregister_urlincludes\features\class-login-url.php:56
filterlostpassword_urlincludes\features\class-login-url.php:57
actionlogin_initincludes\features\class-login-url.php:60
actionshow_user_profileincludes\features\class-passkeys.php:208
actionedit_user_profileincludes\features\class-passkeys.php:209
actionlogin_formincludes\features\class-passkeys.php:212
actionlogin_enqueue_scriptsincludes\features\class-passkeys.php:213
actionadmin_enqueue_scriptsincludes\features\class-passkeys.php:216
filterregistration_errorsincludes\features\class-password-policy.php:52
filtervalidate_password_resetincludes\features\class-password-policy.php:55
filteruser_profile_update_errorsincludes\features\class-password-policy.php:58
actionlogin_enqueue_scriptsincludes\features\class-password-policy.php:61
actionadmin_enqueue_scriptsincludes\features\class-password-policy.php:62
filterpassword_hintincludes\features\class-password-policy.php:65
actionwp_set_passwordincludes\features\class-password-policy.php:74
filterwp_authenticate_userincludes\features\class-password-policy.php:77
actionlogin_initincludes\features\class-password-policy.php:80
actionlogin_initincludes\features\class-password-policy.php:81
actionwp_loginincludes\features\class-password-policy.php:84
actionguard_dog_check_password_expirationsincludes\features\class-password-policy.php:90
filterlogin_messageincludes\features\class-password-policy.php:93
actionadmin_noticesincludes\features\class-password-policy.php:96
actionafter_password_resetincludes\features\class-password-policy.php:226
actionprofile_updateincludes\features\class-password-policy.php:341
actionadmin_noticesincludes\features\class-password-policy.php:1122
actionadmin_noticesincludes\features\class-password-policy.php:1132
actionset_logged_in_cookieincludes\features\class-session-manager.php:147
actionwp_logoutincludes\features\class-session-manager.php:148
actionclear_auth_cookieincludes\features\class-session-manager.php:149
actionadmin_initincludes\features\class-session-manager.php:158
actionwp_enqueue_scriptsincludes\features\class-session-manager.php:159
actionrest_api_initincludes\features\class-session-manager.php:160
actioninitincludes\features\class-session-manager.php:163
actionguard_dog_cleanup_sessionsincludes\features\class-session-manager.php:169
actionshow_user_profileincludes\features\class-session-manager.php:177
actionedit_user_profileincludes\features\class-session-manager.php:178
actionadmin_enqueue_scriptsincludes\features\class-session-manager.php:181
actionlogin_formincludes\features\class-social-login.php:95
actionlogin_enqueue_scriptsincludes\features\class-social-login.php:96
actioninitincludes\features\class-social-login.php:103
actionshow_user_profileincludes\features\class-social-login.php:110
actionedit_user_profileincludes\features\class-social-login.php:111
filterget_avatar_urlincludes\features\class-social-login.php:114
actioninitincludes\features\class-temp-access.php:92
filterwp_authenticate_userincludes\features\class-temp-access.php:95
filterallow_password_resetincludes\features\class-temp-access.php:98
actionadmin_bar_menuincludes\features\class-temp-access.php:101
actioncurrent_screenincludes\features\class-temp-access.php:104
actioninitincludes\features\class-temp-access.php:107
actionshow_user_profileincludes\features\class-two-factor-auth.php:73
actionedit_user_profileincludes\features\class-two-factor-auth.php:74
actionpersonal_options_updateincludes\features\class-two-factor-auth.php:75
actionedit_user_profile_updateincludes\features\class-two-factor-auth.php:76
filterauthenticateincludes\features\class-two-factor-auth.php:79
actionlogin_initincludes\features\class-two-factor-auth.php:80
actionlogin_initincludes\features\class-two-factor-auth.php:81
actionlogin_initincludes\features\class-two-factor-auth.php:82
actionlogin_initincludes\features\class-two-factor-auth.php:83
filterwp_login_errorsincludes\features\class-two-factor-auth.php:84
actionadmin_noticesincludes\features\class-two-factor-auth.php:87
actionadmin_enqueue_scriptsincludes\features\class-two-factor-auth.php:101
actionlogin_enqueue_scriptsincludes\features\class-two-factor-auth.php:102
actionadmin_noticesincludes\features\class-two-factor-auth.php:154
filterrest_pre_dispatchincludes\features\class-user-enumeration.php:105
actiontemplate_redirectincludes\features\class-user-enumeration.php:108
filterauthenticateincludes\features\class-user-enumeration.php:111
actionlostpassword_postincludes\features\class-user-enumeration.php:114
filterretrieve_password_messageincludes\features\class-user-enumeration.php:115
filterlostpassword_errorsincludes\features\class-user-enumeration.php:118
filterxmlrpc_methodsincludes\features\class-user-enumeration.php:121
actionxmlrpc_callincludes\features\class-user-enumeration.php:122
filteroembed_response_dataincludes\features\class-user-enumeration.php:125
filterregistration_errorsincludes\features\class-user-enumeration.php:128
actionguard_dog_enum_digest_emailincludes\features\class-user-enumeration.php:138
actionadmin_post_guard_dog_view_debug_logincludes\utils\class-guard-dog-debug-handlers.php:24
actionadmin_post_guard_dog_clear_debug_logincludes\utils\class-guard-dog-debug-handlers.php:25

Scheduled Events 5

guard_dog_cleanup_expired_blacklist
guard_dog_cleanup_activity_logs
guard_dog_check_password_expirations
guard_dog_cleanup_sessions
guard_dog_enum_digest_email
Maintenance & Trust

Guard Dog Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 13, 2026
PHP min version8.1
Downloads903

Community Trust

Rating100/100
Number of ratings1
Active installs20
Developer Profile

Guard Dog Developer Profile

Adam Greenwell

5 plugins · 60 total installs

94
trust score
Avg Security Score
100/100
Avg Patch Time
30 days
View full developer profile
Detection Fingerprints

How We Detect Guard Dog

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/guard-dog/assets/css/guard-dog-admin-settings.css/wp-content/plugins/guard-dog/assets/js/guard-dog-admin-settings.js
Script Paths
/wp-content/plugins/guard-dog/assets/js/guard-dog-admin-settings.js
Version Parameters
guard-dog/assets/js/guard-dog-admin-settings.js?ver=guard-dog/assets/css/guard-dog-admin-settings.css?ver=

HTML / DOM Fingerprints

CSS Classes
guard-dog-admin-settingsguard-dog-section-titleguard-dog-toggleguard-dog-input-wrapperguard-dog-input-labelguard-dog-inputguard-dog-buttonguard-dog-button-primary+19 more
Data Attributes
data-setting-group="guard_dog_settings"data-setting-key="guard_dog_generic_login_error"
JS Globals
guard_dog_admin_settingsGuard_Dog
REST Endpoints
/wp-json/guard-dog/v1/logs/wp-json/guard-dog/v1/ip-lockouts/wp-json/guard-dog/v1/user-lockouts/wp-json/guard-dog/v1/settings
FAQ

Frequently Asked Questions about Guard Dog