{"id":300582,"date":"2026-10-16T22:54:51","date_gmt":"2026-10-16T22:54:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/defentry-smart-security-login-protection\/"},"modified":"2026-10-26T23:28:25","modified_gmt":"2026-10-26T23:28:25","slug":"defentry","status":"publish","type":"plugin","link":"https:\/\/en-gb.wordpress.org\/plugins\/defentry\/","author":23352743,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.0","stable_tag":"2.1.0","tested":"7.1.3","requires":"5.5","requires_php":"7.4","requires_plugins":null,"header_name":"Defentry - Smart Security & Login Protection","header_author":"Md Jahid Bin Sabit","header_description":"Defentry is a lightweight WordPress firewall and smart login protection plugin that secures your WordPress site with advanced firewall protection, malware scan, geo blocking, and emergency lockdown. Features include real-time login alerts, device-based login protection, IP blocking, master security control, and comprehensive WordPress defense against unauthorized access and malicious attacks.","assets_banners_color":"210404","last_updated":"2026-10-26 23:28:25","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/jbsabit.com\/","header_plugin_uri":"","header_author_uri":"https:\/\/jbsabit.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":240,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.3":{"tag":"1.2.3","author":"jbsabit","date":"2026-10-16 22:54:26","revision":3751229},"2.0.5":{"tag":"2.0.5","author":"jbsabit","date":"2026-10-17 01:20:30","revision":3751310},"2.1.0":{"tag":"2.1.0","author":"jbsabit","date":"2026-10-26 23:28:25","revision":3767479}},"upgrade_notice":{"2.1.0":"<p>Device verification is now enforced server-side, and this release adds wp-login attempt limiting with IP lockouts, per-IP login activity stats, and trusted-device expiry with names. Existing trusted devices are grandfathered (never expire) and all settings migrate automatically \u2014 no action needed.<\/p>","1.2.1":"<p>Maintenance release: Plugin Check warnings resolved. No behavior changes.<\/p>","1.2":"<p>Security release. Legacy plaintext stop passwords are automatically hashed on upgrade \u2014 no action needed. Change your stop password after updating if it was ever the default.<\/p>","1.1":"<p>Changed prefix from wrs to scbr to avoid conflicts, improved script\/style enqueuing. Auto-migrates options\/user data on activation. Update for compatibility. Requires WP 5.5+, PHP 7.4+.<\/p>","1.0":"<p>Initial release. Requires WordPress 5.5+ and PHP 7.4+.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3751229,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3751229,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.3","2.0.5","2.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3751310,"resolution":"1","location":"assets","locale":"","width":1280,"height":665},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3751310,"resolution":"2","location":"assets","locale":"","width":1280,"height":665},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3751310,"resolution":"3","location":"assets","locale":"","width":1280,"height":665},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3751310,"resolution":"4","location":"assets","locale":"","width":1280,"height":665},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3751310,"resolution":"5","location":"assets","locale":"","width":500,"height":794}},"screenshots":{"1":"Master control panel (Overview) \u2014 protection status, trusted-device counts and security stats at a glance.","2":"Verification settings \u2014 feature toggle switches, siren stop-password and custom siren audio controls.","3":"Trusted device management \u2014 per-admin device lists with one-click remove and danger-zone reset.","4":"New-device verification overlay \u2014 the full-screen stop-password prompt with siren that blocks unrecognized devices.","5":"Protection tab \u2014 blocked users, IP attempt limiting with blocked-IP list, active lockouts, per-IP login activity and one-click IP actions."}},"plugin_section":[262246],"plugin_tags":[2439,287177,9374,15756,600],"plugin_category":[54],"plugin_contributors":[287178,288804],"plugin_business_model":[],"class_list":["post-300582","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-brute-force","plugin_tags-device-verification","plugin_tags-limit-login-attempts","plugin_tags-login-protection","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-jbsabit","plugin_contributors-wearereflecters","plugin_committers-jbsabit"],"banners":{"banner":"https:\/\/ps.w.org\/defentry\/assets\/banner-772x250.png?rev=3751229","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/defentry\/assets\/icon-256x256.gif?rev=3751229","icon_2x":"https:\/\/ps.w.org\/defentry\/assets\/icon-256x256.gif?rev=3751229","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/defentry\/assets\/screenshot-1.png?rev=3751310","caption":"Master control panel (Overview) \u2014 protection status, trusted-device counts and security stats at a glance."},{"src":"https:\/\/ps.w.org\/defentry\/assets\/screenshot-2.png?rev=3751310","caption":"Verification settings \u2014 feature toggle switches, siren stop-password and custom siren audio controls."},{"src":"https:\/\/ps.w.org\/defentry\/assets\/screenshot-3.png?rev=3751310","caption":"Trusted device management \u2014 per-admin device lists with one-click remove and danger-zone reset."},{"src":"https:\/\/ps.w.org\/defentry\/assets\/screenshot-4.png?rev=3751310","caption":"New-device verification overlay \u2014 the full-screen stop-password prompt with siren that blocks unrecognized devices."},{"src":"https:\/\/ps.w.org\/defentry\/assets\/screenshot-5.png?rev=3751310","caption":"Protection tab \u2014 blocked users, IP attempt limiting with blocked-IP list, active lockouts, per-IP login activity and one-click IP actions."}],"raw_content":"<!--section=description-->\n<p><strong>Stop WordPress account takeover before it starts.<\/strong><\/p>\n\n<p>Stolen passwords. Hijacked sessions. Brute-force bots hammering login pages around the clock. Most WordPress breaches don't break the lock \u2014 they steal the key. <strong>Defentry<\/strong> adds a second door: <strong>device-based login verification for WordPress<\/strong>.<\/p>\n\n<p>When an administrator, editor, or author signs in from a <strong>new, unrecognized device<\/strong>, Defentry instantly covers the dashboard with a full-screen <strong>verification overlay and siren<\/strong> until a secret stop password is entered. At the same moment, every other logged-in user sees a <strong>real-time login alert banner<\/strong> and hears the siren \u2014 so a hijacked session can never slip by silently.<\/p>\n\n<p>Defentry combines three proven layers of WordPress login protection in one lightweight plugin: <strong>limit login attempts<\/strong> with automatic IP lockouts to stop brute-force attacks on wp-login.php, <strong>trusted-device verification<\/strong> that defeats stolen passwords, and <strong>instant login alerts<\/strong> so your team sees every new device the second it appears.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>A privileged user logs in from a device Defentry has never seen.<\/li>\n<li>The dashboard is immediately blocked by the stop-password overlay (with optional siren).<\/li>\n<li>All other logged-in users get an instant alert banner with one-click Trust, Mute, and Master Admin actions.<\/li>\n<li>The correct stop password verifies and permanently trusts the device. Wrong guesses are rate-limited per IP \u2014 3 strikes triggers a temporary IP block. Verification is enforced server-side: an unverified device receives only the verification page \u2014 no dashboard screens, AJAX actions, or form submissions run until it passes.<\/li>\n<\/ol>\n\n<p><strong>Login security features<\/strong><\/p>\n\n<ul>\n<li><strong>New-device verification overlay<\/strong> \u2014 unrecognized devices cannot touch wp-admin until the stop password is entered<\/li>\n<li><strong>Brute-force IP protection<\/strong> \u2014 3 wrong password attempts means a temporary IP block. Detection uses <code>REMOTE_ADDR<\/code> only, so attackers can't dodge it by spoofing <code>X-Forwarded-For<\/code> headers<\/li>\n<li><strong>Login attempt limiting<\/strong> \u2014 failed wp-login attempts are counted per IP; after 5 failures (configurable) the IP is locked out and even the correct password is rejected until the lockout expires. Optional escalating lockouts, an IP whitelist, and a Master Admin email on every lockout<\/li>\n<li><strong>Login activity by IP<\/strong> \u2014 every login attempt, successful or failed, is counted per IP address for the last 30 days: see exactly how many requests each IP made, which usernames it tried, and block or whitelist it in one click<\/li>\n<li><strong>Siren + broadcast login alerts<\/strong> \u2014 an audible siren and alert banner notify every logged-in user the second a new device appears; custom MP3 siren supported, one-click mute<\/li>\n<li><strong>Master Admin control<\/strong> \u2014 one designated administrator owns the security settings and can instantly block suspicious users (blocked users are logged out on the spot)<\/li>\n<li><strong>Trusted device management<\/strong> \u2014 view, trust, rename, renew, and remove devices per user, or reset all devices at once. Devices can optionally expire after 30, 90, or 180 days and are auto-named from the browser (e.g. \"Chrome \u00b7 Windows\")<\/li>\n<li><strong>New-device email alerts<\/strong> \u2014 administrators, editors, and authors are emailed once per new device with user, time, IP, and device details<\/li>\n<li><strong>Hardened admin pages<\/strong> \u2014 sends <code>X-Frame-Options<\/code>, <code>X-Content-Type-Options<\/code>, and <code>Referrer-Policy<\/code> headers on admin screens<\/li>\n<\/ul>\n\n<p><strong>Perfect for<\/strong><\/p>\n\n<ul>\n<li>Agencies and freelancers managing client WordPress sites<\/li>\n<li>WooCommerce stores and membership sites with multiple staff accounts<\/li>\n<li>Bloggers and businesses who want to know the instant an unknown device touches their dashboard<\/li>\n<\/ul>\n\n<p><strong>Built like a security tool should be<\/strong><\/p>\n\n<ul>\n<li>The stop password is hashed with <code>wp_hash_password()<\/code> and verified server-side only \u2014 never stored in plaintext, never shown in settings, never exposed to the browser<\/li>\n<li>Nonce-protected AJAX, capability checks on every action, sanitized inputs and escaped outputs throughout<\/li>\n<li>No tracking, no upsells, no bloat \u2014 100% free under the GPL, forever<\/li>\n<\/ul>\n\n<p>Defentry is one strong layer of WordPress login security. Pair it with two-factor authentication and a firewall for defense in depth.<\/p>\n\n<p><strong>Links:<\/strong> <a href=\"https:\/\/wordpress.org\/support\/plugin\/defentry\/\">Support forum<\/a> \u00b7 <a href=\"https:\/\/jbsabit.com\/\">Author website<\/a><\/p>\n\n<p>Built by WordPress security specialist Md Jahid Bin Sabit.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Defentry is designed, built, and maintained by <strong>Md Jahid Bin Sabit<\/strong> \u2014 WordPress security specialist.<\/p>\n\n<ul>\n<li>Website: https:\/\/jbsabit.com\/<\/li>\n<li>WordPress.org profile: https:\/\/profiles.wordpress.org\/jbsabit\/<\/li>\n<li>Contributor: Reflecters \u2014 https:\/\/profiles.wordpress.org\/wearereflecters\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/defentry\/<\/code>, or install through the WordPress plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>A notice will prompt an administrator to select the <strong>Master Admin<\/strong>. Pick one and save.<\/li>\n<li>Open the <strong>Defentry<\/strong> menu, set a siren stop password (there is no default \u2014 verification stays off until you set one), and turn Status <strong>ON<\/strong>.<\/li>\n<li>Done. Logins from new devices will now trigger verification.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20when%20someone%20logs%20in%20from%20a%20new%20device%3F\"><h3>What happens when someone logs in from a new device?<\/h3><\/dt>\n<dd><p>When an administrator, editor, or author logs in from a device Defentry has never seen, the WordPress dashboard is covered by a full-screen overlay asking for the siren stop password \u2014 optionally with a siren sound. Every other logged-in user simultaneously sees a red alert banner (\"New device login detected\") with buttons to trust the device, mute the siren, or take Master Admin action.<\/p><\/dd>\n<dt id=\"how%20do%20i%20trust%20%2F%20verify%20a%20new%20device%3F\"><h3>How do I trust \/ verify a new device?<\/h3><\/dt>\n<dd><p>Enter the correct siren stop password on the new device and it is trusted permanently. The Master Admin can also trust any device for any user from the alert banner or from Defentry \u2192 Manage Trusted Devices.<\/p><\/dd>\n<dt id=\"who%20can%20block%20or%20unblock%20users%3F\"><h3>Who can block or unblock users?<\/h3><\/dt>\n<dd><p>Only the Master Admin \u2014 the one administrator designated in the Defentry settings. This keeps emergency response in a single accountable hand.<\/p><\/dd>\n<dt id=\"what%20exactly%20does%20blocking%20a%20user%20do%3F\"><h3>What exactly does blocking a user do?<\/h3><\/dt>\n<dd><p>The user is added to the blocklist. On their next dashboard visit they are logged out immediately with a notice, and they cannot use wp-admin again until the Master Admin unblocks them from Defentry \u2192 Manage Blocked Users.<\/p><\/dd>\n<dt id=\"i%20don%27t%20hear%20the%20siren.%20why%3F\"><h3>I don't hear the siren. Why?<\/h3><\/dt>\n<dd><p>Browsers block audio until you interact with the page (click, scroll, or press a key). The siren starts after your first interaction. You can mute it at any time from the alert banner, or disable\/replace it in the Defentry settings.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20siren%20sound%20or%20turn%20it%20off%3F\"><h3>Can I change the siren sound or turn it off?<\/h3><\/dt>\n<dd><p>Yes. In the Defentry settings you can enable or disable the siren and upload your own MP3. Leave the upload empty to use the built-in siren.<\/p><\/dd>\n<dt id=\"which%20user%20roles%20are%20protected%3F\"><h3>Which user roles are protected?<\/h3><\/dt>\n<dd><p>Administrators, editors, and authors. Contributors, subscribers, and customers are never interrupted.<\/p><\/dd>\n<dt id=\"i%20forgot%20the%20stop%20password.%20how%20do%20i%20get%20back%20in%3F\"><h3>I forgot the stop password. How do I get back in?<\/h3><\/dt>\n<dd><p>An administrator with database access can delete the <code>scbr_settings<\/code> row from the <code>wp_options<\/code> table \u2014 the plugin then resets with protection OFF and no stop password set, so you can set a new password. Alternatively, temporarily rename the plugin folder via FTP\/cPanel to disable it, then set a new stop password in the settings.<\/p><\/dd>\n<dt id=\"can%20an%20attacker%20bypass%20verification%20by%20clearing%20cookies%3F\"><h3>Can an attacker bypass verification by clearing cookies?<\/h3><\/dt>\n<dd><p>No \u2014 clearing the cookie generates a brand-new random device ID, which is untrusted by definition, so the overlay appears again. The system fails closed.<\/p><\/dd>\n<dt id=\"does%20defentry%20replace%20two-factor%20authentication%20%282fa%29%3F\"><h3>Does Defentry replace two-factor authentication (2FA)?<\/h3><\/dt>\n<dd><p>No. Device verification and 2FA stop different attacks \u2014 a stolen password alone is useless against Defentry, and a stolen device alone is useless against 2FA. Use both.<\/p><\/dd>\n<dt id=\"will%20defentry%20slow%20down%20my%20website%3F\"><h3>Will Defentry slow down my website?<\/h3><\/dt>\n<dd><p>No. Its scripts and styles load only on wp-admin pages, and only when needed. Visitors to your public site are completely unaffected, and the plugin makes no external HTTP requests.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%20or%20cloudflare%3F\"><h3>Does it work with caching plugins or Cloudflare?<\/h3><\/dt>\n<dd><p>Yes. Verification happens inside wp-admin, which caching plugins and CDNs don't cache. One honest note: IP-based attempt limiting reads <code>REMOTE_ADDR<\/code>; behind a reverse proxy or CDN (like Cloudflare) all visitors may share the proxy's IP, so an IP block applies proxy-wide. Device verification itself is unaffected.<\/p><\/dd>\n<dt id=\"is%20defentry%20compatible%20with%20multisite%3F\"><h3>Is Defentry compatible with multisite?<\/h3><\/dt>\n<dd><p>Settings are stored per site, not network-wide, and multisite has not been officially tested. It should work per-site; network-wide management isn't included.<\/p><\/dd>\n<dt id=\"what%20data%20does%20defentry%20store%3F%20is%20it%20private%3F\"><h3>What data does Defentry store? Is it private?<\/h3><\/dt>\n<dd><p>Random device IDs (in a browser cookie and per-user metadata), device details (name, trust\/expiry dates, last seen), plugin settings (in <code>wp_options<\/code>), per-IP login attempt counts (kept for 30 days, on your server only), and short-lived transients for login attempts and alerts. Nothing ever leaves your server \u2014 no tracking, no telemetry, no third-party calls.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20custom%20login%20pages%2C%20social%20login%2C%20or%20page%20builders%3F\"><h3>Does it work with custom login pages, social login, or page builders?<\/h3><\/dt>\n<dd><p>Yes. Verification happens inside wp-admin <em>after<\/em> login, so it works regardless of how the user logged in.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20master%20admin%20account%20is%20deleted%3F\"><h3>What happens if the Master Admin account is deleted?<\/h3><\/dt>\n<dd><p>Defentry detects the missing Master Admin and prompts an administrator to choose a new one. Protection settings are preserved.<\/p><\/dd>\n<dt id=\"how%20do%20i%20limit%20login%20attempts%20in%20wordpress%3F\"><h3>How do I limit login attempts in WordPress?<\/h3><\/dt>\n<dd><p>Use Defentry's built-in login limiter: failed wp-login attempts are counted per IP address, and after the limit you set (default: 5 failures within 15 minutes) that IP is locked out for 30 minutes \u2014 even the correct password is rejected until the lockout expires. You can whitelist your own IP, enable escalating lockouts for repeat offenders, get an email on every lockout, and unlock any IP instantly from Defentry \u2192 Protection. No separate limit-login-attempts plugin needed.<\/p><\/dd>\n<dt id=\"how%20do%20i%20stop%20brute-force%20attacks%20on%20wp-login.php%3F\"><h3>How do I stop brute-force attacks on wp-login.php?<\/h3><\/dt>\n<dd><p>Brute-force bots guess passwords until something works. Defentry stops them at three points: the login limiter locks out guessing IPs (including XML-RPC and REST authentication attempts), per-IP login activity shows you exactly which IPs are attacking and which usernames they are trying, and \u2014 if a password ever does leak \u2014 device verification still blocks the attacker, because a correct password on an unrecognized device only reaches the stop-password verification page.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20an%20ip%20is%20locked%20out%20of%20wp-login%3F\"><h3>What happens when an IP is locked out of wp-login?<\/h3><\/dt>\n<dd><p>After too many failed login attempts (default: 5 within 15 minutes), that IP is locked out for 30 minutes \u2014 during the lockout even a correct password is rejected with a generic message. If escalating lockouts are enabled, repeat lockouts within 24 hours double in length (up to 24 hours). Whitelisted IPs are never locked out, a successful login clears the failure counter, and the Master Admin can unlock any IP instantly from Defentry \u2192 Protection.<\/p><\/dd>\n<dt id=\"i%20locked%20myself%20out.%20what%20now%3F\"><h3>I locked myself out. What now?<\/h3><\/dt>\n<dd><p>Wait for the lockout to expire, log in from a different network\/IP, or \u2014 if you have database access \u2014 delete the <code>scbr_lockouts<\/code> row from <code>wp_options<\/code>. To prevent this, whitelist your own IP in Defentry \u2192 Protection \u2192 Login Protection before you need it.<\/p><\/dd>\n<dt id=\"do%20trusted%20devices%20expire%3F\"><h3>Do trusted devices expire?<\/h3><\/dt>\n<dd><p>Only if you want them to. In Defentry \u2192 Verification you can set newly trusted devices to expire after 30, 90, or 180 days (default: never). Devices trusted before you change the setting never expire unless renewed. An expired device simply verifies with the stop password again, exactly like a new device.<\/p><\/dd>\n<dt id=\"what%20does%20the%20per-ip%20login%20activity%20show%3F\"><h3>What does the per-IP login activity show?<\/h3><\/dt>\n<dd><p>For each IP address: total login requests, how many failed, how many succeeded, which usernames were tried, and when it was last seen \u2014 aggregated over the last 7 days in the Protection tab and stored for 30 days. The Master Admin can block an IP for 1 hour, unlock a lockout, or whitelist an IP directly from that table.<\/p><\/dd>\n<dt id=\"how%20can%20i%20see%20who%20is%20trying%20to%20log%20in%20to%20my%20wordpress%20site%3F\"><h3>How can I see who is trying to log in to my WordPress site?<\/h3><\/dt>\n<dd><p>Open Defentry \u2192 Protection \u2192 Login Activity by IP. For every IP address you see how many login requests it made in the last 7 days, how many failed, how many succeeded, exactly which usernames it tried, and when it was last seen \u2014 so a brute-force attack, a password-spraying bot, or a colleague who keeps mistyping their password is visible at a glance, and you can block, unlock, or whitelist the IP in one click.<\/p><\/dd>\n<dt id=\"is%20defentry%20really%20free%3F\"><h3>Is Defentry really free?<\/h3><\/dt>\n<dd><p>Yes \u2014 100% free, GPL-licensed, no premium version, no upsells, no locked features.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>SECURITY: Device verification is now enforced server-side. An unverified device receives only a standalone verification page \u2014 no wp-admin screens, AJAX actions, or form handlers run until the stop password is verified (previously the overlay was visual only).<\/li>\n<li>SECURITY: The alert banner's \"Trust Device\" button can no longer bypass verification \u2014 trusting your own unverified device now requires the stop password (the Master Admin is exempt).<\/li>\n<li>SECURITY: Blocked IPs are now hard-gated on every admin page instead of being skipped by detection, and blocked-user enforcement no longer depends on the overlay feature toggle.<\/li>\n<li>SECURITY: XML-RPC and REST authentication failures now count toward login lockouts; the stop password minimum length (6) is enforced server-side on every settings path; Master Admin transfers are validated on every path.<\/li>\n<li>NEW: Quick setup popup \u2014 the moment the plugin is activated, administrators get a one-screen setup: choose the Master Admin, set the stop password, turn protection on, and optionally whitelist their own IP so they can never lock themselves out.<\/li>\n<li>NEW: Login attempt limiting \u2014 failed wp-login attempts are counted per IP; repeat offenders are locked out (even the correct password is rejected) with configurable thresholds, optional escalating lockouts, an IP whitelist, active-lockout management, and an optional Master Admin email on lockout.<\/li>\n<li>NEW: Login activity by IP \u2014 every login attempt (success or failure) is counted per IP for 30 days. The Protection tab shows requests\/failed\/success per IP, usernames tried, and last seen, with one-click Block 1h, Unlock, and Whitelist actions.<\/li>\n<li>NEW: Trusted device expiry + naming \u2014 devices are auto-named from the browser\/OS, can be renamed, show trust\/expiry\/last-seen in the Devices tab, and can optionally expire after 30\/90\/180 days (existing devices are grandfathered and never expire unless renewed).<\/li>\n<li>NEW: Blocked IPs panel \u2014 IPs auto-blocked after 3 wrong stop-password attempts (and IPs blocked from the alert banner or Login Activity table) are now listed in Defentry \u2192 Protection with the block expiry and a one-click Unblock.<\/li>\n<li>SECURITY: no default stop password anymore \u2014 fresh installs start with no password set (verification stays dormant until you set one), installs still using the old public default <code>2210<\/code> have it removed automatically with an email to the site admin, and protection cannot be switched on before a stop password exists.<\/li>\n<li>FIX: a trusted device is no longer locked out by an IP block \u2014 the Master Admin can always reach the Defentry settings (and its Unblock button) from a verified device, even on a blocked IP.<\/li>\n<li>Code quality: Plugin Check clean \u2014 the gate page escapes its message at output, and the gate's routing-only AJAX action read carries a documented <code>phpcs:ignore<\/code> justification (no state changes there; every allowed handler verifies its nonce).<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Code quality: documented <code>phpcs:ignore<\/code> justifications for the five <code>WordPress.Security.NonceVerification.Recommended<\/code> warnings \u2014 all are false positives (display-only <code>$_GET<\/code> reads; every state-changing handler verifies its nonce). No behavior change.<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Redesigned Verification, Devices, Protection, and Master Admin tabs to match the Overview tab: feature toggles instead of checkboxes, device cards per admin, danger-zone reset, blocked-user rows, IP-limit stat tiles, and a Master Admin highlight card.<\/li>\n<li>FIXED: saving from the Verification or Master Admin tab silently turned protection OFF (status is now only updated by forms that manage it).<\/li>\n<li>Master-Admin-exclusive control plane: secondary admins no longer see the Defentry menu or dashboard widget once setup is complete. Device verification, alert banners, and the siren still protect every admin account.<\/li>\n<li>The verification overlay dialog now has its own siren sound toggle, reachable even while the overlay covers the admin notices.<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>FIXED: broadcast siren could stay silent on other admins' browsers \u2014 the realtime poller now retries audio playback on user interaction (browser autoplay policy), and the \"Mute Siren\" button is now a toggle: muted users see \"Unmute Siren\" to re-enable the alert sound.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>FIXED: settings page showed the old unstyled UI when protection was OFF (v2 stylesheet now loads on the settings page and dashboard regardless of status).<\/li>\n<li>NEW: realtime broadcast poller \u2014 other logged-in admins now see and hear the new-device alert within ~25 seconds without reloading the page; the banner auto-clears when the alert ends.<\/li>\n<li>Warning banner now blinks with a red alarm glow to catch the eye.<\/li>\n<li>NEW: \"Block IP\" button on the alert banner (Master Admin) instantly blocks the new device's IP for 1 hour; \"Block User\" now also instantly blocks the alert IP.<\/li>\n<li>Banner action buttons (trust\/block\/mute) now work on every admin page, not just the settings page.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Red alarm blink animation on the verification overlay backdrop (respects prefers-reduced-motion).<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Complete UI\/UX overhaul: tabbed Master Control Panel (Overview, Verification, Devices, Protection, Master Admin) with a status card, protection toggle, and live stat tiles; 3-step first-run setup wizard; redesigned new-device verification overlay (modern card, shield emblem, smooth entrance animation, fully responsive, reduced-motion aware); new \"Defentry Security\" dashboard widget; polished real-time alert banner. No security-logic changes \u2014 all protection behavior is identical to 1.2.x.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Directory assets finalized: real screenshots from a live site, animated siren icon and cinematic banner.<\/li>\n<li>Expanded SEO readme: full FAQ (17 questions), credits, and links.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>SEO readme rewrite with real directory screenshots, keyword-rich description and honest feature list.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Plugin Check clean: silenced direct-DB-query warnings in uninstall.php (caching is meaningless during uninstall) and shortened the readme short description to 150 characters.<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li><strong>Security:<\/strong> stop password is now hashed with wp_hash_password() and verified server-side only \u2014 the hash is never printed to the page and the client-token bypass is removed. Plaintext passwords are never stored or displayed.<\/li>\n<li><strong>Security:<\/strong> only the device owner or the Master Admin can trust a device for another user.<\/li>\n<li><strong>Security:<\/strong> IP detection now uses REMOTE_ADDR only (X-Forwarded-For \/ Client-IP are client-spoofable).<\/li>\n<li>New-device email\/broadcast alerts are sent once per device instead of on every page load.<\/li>\n<li>Admin menu renamed from \"Siren Protector\" to \"Defentry\"; security headers are now actually sent (previously dead code).<\/li>\n<li>Accessibility: alert banner no longer hard-blinks; animation respects prefers-reduced-motion.<\/li>\n<li>Added uninstall.php \u2014 all options, transients and user meta are removed on uninstall.<\/li>\n<li>Readme rewritten to describe only features the plugin actually has.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Changed prefix from <code>wrs<\/code> to <code>scbr<\/code> for all options, transients, user meta, cookies, and scripts to avoid conflicts with other plugins.<\/li>\n<li>Improved script and style enqueuing to load only on relevant admin pages.<\/li>\n<li>Added data migration during activation to preserve existing settings and user data.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release with device-based authentication, siren alerts, master admin control, and IP blocking.<\/li>\n<\/ul>","raw_excerpt":"WordPress login security: limit login attempts, lock out brute-force IPs, and verify new devices with a stop password, trusted devices &amp; alerts.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/300582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=300582"}],"author":[{"embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jbsabit"}],"wp:attachment":[{"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=300582"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=300582"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=300582"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=300582"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=300582"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-gb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=300582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}