{"id":288391,"date":"2026-03-30T20:29:30","date_gmt":"2026-03-30T20:29:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/atlant-wp-security\/"},"modified":"2026-03-30T20:31:08","modified_gmt":"2026-03-30T20:31:08","slug":"atlant-security","status":"publish","type":"plugin","link":"https:\/\/ko.wordpress.org\/plugins\/atlant-security\/","author":5774118,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.2","stable_tag":"1.1.2","tested":"6.9.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Atlant Security","header_author":"Atlant Security","header_description":"Enterprise-grade WordPress security by Atlant Security. WAF, brute-force protection, real-time visitor log, IP blocking, bot detection, malware scanner, 2FA, and post-breach recovery.","assets_banners_color":"fcfcfd","last_updated":"2026-03-30 20:31:08","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/atlantsecurity.com","header_plugin_uri":"https:\/\/atlantsecurity.com\/learn\/we-are-releasing-the-best-security-plugin-for-wordpress-in-existence\/","header_author_uri":"https:\/\/atlantsecurity.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":87,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.2":{"tag":"1.1.2","author":"xorred","date":"2026-03-30 20:31:08"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3494942,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3494942,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3494942,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3494942,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3494942,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3494942,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3494942,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3494942,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Security Dashboard \u2014 real-time visitor monitoring, stat cards, traffic charts, top IPs, and browser distribution.","2":"Web Application Firewall (WAF) \u2014 overview with attack stats, mode toggle, and rule category summary.","3":"WAF Rules \u2014 28+ attack pattern families with per-rule enable\/disable and log\/block controls.","4":"IP Block List \u2014 blocked IPs with reasons, durations, hit counts, and VirusTotal integration."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2439,1174,55021,600,1909],"plugin_category":[54],"plugin_contributors":[259046],"plugin_business_model":[],"class_list":["post-288391","plugin","type-plugin","status-publish","hentry","plugin_tags-brute-force","plugin_tags-firewall","plugin_tags-malware-scanner","plugin_tags-security","plugin_tags-two-factor-authentication","plugin_category-security-and-spam-protection","plugin_contributors-xorred","plugin_committers-xorred"],"banners":{"banner":"https:\/\/ps.w.org\/atlant-security\/assets\/banner-772x250.png?rev=3494942","banner_2x":"https:\/\/ps.w.org\/atlant-security\/assets\/banner-1544x500.png?rev=3494942","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/atlant-security\/assets\/icon-128x128.png?rev=3494942","icon_2x":"https:\/\/ps.w.org\/atlant-security\/assets\/icon-256x256.png?rev=3494942","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/atlant-security\/assets\/screenshot-1.png?rev=3494942","caption":"Security Dashboard \u2014 real-time visitor monitoring, stat cards, traffic charts, top IPs, and browser distribution."},{"src":"https:\/\/ps.w.org\/atlant-security\/assets\/screenshot-2.png?rev=3494942","caption":"Web Application Firewall (WAF) \u2014 overview with attack stats, mode toggle, and rule category summary."},{"src":"https:\/\/ps.w.org\/atlant-security\/assets\/screenshot-3.png?rev=3494942","caption":"WAF Rules \u2014 28+ attack pattern families with per-rule enable\/disable and log\/block controls."},{"src":"https:\/\/ps.w.org\/atlant-security\/assets\/screenshot-4.png?rev=3494942","caption":"IP Block List \u2014 blocked IPs with reasons, durations, hit counts, and VirusTotal integration."}],"raw_content":"<!--section=description-->\n<p><strong>Atlant Security<\/strong> is a comprehensive WordPress security plugin that provides enterprise-grade protection through 17 integrated security modules organized in a 5-layer defense architecture.<\/p>\n\n<h4>5-Layer Defense Architecture<\/h4>\n\n<ol>\n<li><strong>Pre-WordPress WAF<\/strong> \u2014 Firewall, rate limiter, and IP blocking run before WordPress processes the request.<\/li>\n<li><strong>Application-Aware<\/strong> \u2014 Login security, custom login URL, two-factor authentication, session hardening, cron monitoring, and REST API policies.<\/li>\n<li><strong>Content &amp; Config<\/strong> \u2014 WordPress hardening, security headers, AI crawler management, and honeypot traps.<\/li>\n<li><strong>Outbound &amp; Data<\/strong> \u2014 SSRF prevention, malware scanning (files and database).<\/li>\n<li><strong>Response &amp; Recovery<\/strong> \u2014 Post-breach recovery, notifications, visitor log, and audit log.<\/li>\n<\/ol>\n\n<h4>Key Features<\/h4>\n\n<p><strong>Web Application Firewall (WAF)<\/strong>\nInspects every request against 28+ attack pattern families including SQL injection, XSS, remote code execution, path traversal, PHP object injection, and WordPress-specific attacks. Block or log-only mode. Triple URL decoding prevents evasion.<\/p>\n\n<p><strong>Brute Force Protection<\/strong>\nProgressive lockout system (5 min &gt; 30 min &gt; 24 hours) with configurable thresholds. Generic login error messages prevent username enumeration. Author enumeration blocking.<\/p>\n\n<p><strong>Malware Scanner<\/strong>\nLocal file and database scanner with 38 malware signatures. Detects backdoors, webshells (WSO, c99, r57), crypto miners, credit card skimmers, and obfuscated code. Quarantine system with web access blocking.<\/p>\n\n<p><strong>Two-Factor Authentication (2FA)<\/strong>\nTOTP (Google Authenticator, Authy) and email OTP. Per-role enforcement, 10 recovery codes, 5-minute challenge timeout, replay attack prevention.<\/p>\n\n<p><strong>Honeypot Traps<\/strong>\nZero-false-positive bot detection: hidden link traps, fake login pages, comment honeypots, and Contact Form 7 integration. 3-layer safe bot protection ensures Googlebot, Bingbot, and allowed AI crawlers are never blocked.<\/p>\n\n<p><strong>AI Crawler Management<\/strong>\nControl 20+ known AI\/LLM training crawlers (GPTBot, ClaudeBot, Google-Extended, Bytespider, and more). Per-crawler toggles, robots.txt integration, and 403 enforcement. Block training crawlers while allowing browsing bots.<\/p>\n\n<p><strong>Security Headers<\/strong>\nManage HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, CSP, CORP, and COOP. Letter-grade scoring system. Remove X-Powered-By and Server headers.<\/p>\n\n<p><strong>Session Security<\/strong>\nCookie hardening (HttpOnly, Secure, SameSite). Session binding via IP + User-Agent fingerprint detects hijacking. Concurrent session limits. Idle timeout. Optional admin bypass for all session restrictions.<\/p>\n\n<p><strong>Rate Limiter<\/strong>\nSliding-window rate limiting across 11 endpoint categories: frontend, login, search, feed, REST API, WooCommerce checkout, XML-RPC, and cron.<\/p>\n\n<p><strong>REST API Policies<\/strong>\nPer-route access control with authentication requirements, HTTP method restrictions, rate limits, and IP whitelists. 5 built-in policies protect user enumeration, search, and write endpoints.<\/p>\n\n<p><strong>Cron Guard<\/strong>\nMonitors wp-cron.php for flood attacks. Detects suspicious scheduled tasks via baseline comparison. System cron migration helper.<\/p>\n\n<p><strong>Outbound Monitor (SSRF Prevention)<\/strong>\nMonitors all outgoing HTTP requests. Blocks requests to private\/internal IP ranges including cloud metadata endpoints. Domain allowlist with wildcard support. Caller detection traces requests to specific plugins.<\/p>\n\n<p><strong>Post-Breach Recovery<\/strong>\n12 emergency actions: terminate sessions, force password reset, rotate secret keys, emergency lockdown, reinstall core, reinstall plugins, audit admin accounts, clear caches, malware scan, disable plugins, and downloadable incident report.<\/p>\n\n<p><strong>Real-Time Dashboard<\/strong>\nLive visitor monitoring with 15-second auto-refresh. Stat cards, traffic charts, top IPs with VirusTotal integration, browser distribution, and IP detail modals.<\/p>\n\n<p><strong>Visitor Log &amp; Audit Log<\/strong>\nComplete request history with filters (IP, URL, bots, blocked, time range). Tamper-resistant admin action audit trail.<\/p>\n\n<p><strong>Notifications<\/strong>\nEmail alerts (HTML formatted, color-coded severity), Slack webhooks, custom JSON webhooks, and daily digest. Configurable severity threshold with 5-minute deduplication.<\/p>\n\n<p><strong>WordPress Hardening<\/strong>\nOne-click toggles: disable XML-RPC, hide WordPress version, block REST API user enumeration, block author enumeration, disable file editor, block PHP execution in uploads.<\/p>\n\n<h4>What Makes Atlant Security Different<\/h4>\n\n<ul>\n<li><strong>Pre-WordPress WAF<\/strong> \u2014 Blocks attacks via auto_prepend_file before WordPress even loads<\/li>\n<li><strong>Outbound HTTP Monitor<\/strong> \u2014 Detects SSRF attacks and unauthorized outbound connections<\/li>\n<li><strong>Database Backdoor Scanner<\/strong> \u2014 Scans wp_options and wp_posts for eval(), base64, and hidden backdoors<\/li>\n<li><strong>Client-Side Bot Detection<\/strong> \u2014 JavaScript challenges and browser fingerprinting catch sophisticated bots<\/li>\n<li><strong>AI\/LLM Crawler Blocking<\/strong> \u2014 Identify and block AI training crawlers scraping your content<\/li>\n<li><strong>Honeypot Traps<\/strong> \u2014 Hidden links, fake login pages, invisible form fields that only bots trigger<\/li>\n<li><strong>Cron Guard<\/strong> \u2014 Monitors wp-cron for unauthorized scheduled tasks planted by malware<\/li>\n<li><strong>Post-Breach Recovery<\/strong> \u2014 Guided recovery toolkit with 12 emergency actions in one place<\/li>\n<li><strong>Session Fingerprint Binding<\/strong> \u2014 Binds sessions to IP + User-Agent so stolen cookies are useless<\/li>\n<li><strong>Real-Time Visitor Dashboard<\/strong> \u2014 Live visitor feed updated every 15 seconds<\/li>\n<li><strong>Smart Password Policy<\/strong> \u2014 Minimum length, complexity, common-password blocking, and passphrase support<\/li>\n<li><strong>Granular REST API Policies<\/strong> \u2014 Per-endpoint control, not just a global on\/off switch<\/li>\n<li><strong>Safe Mode Override<\/strong> \u2014 One constant in wp-config.php disables all blocking features instantly<\/li>\n<li><strong>Deactivation Data Control<\/strong> \u2014 Choose to keep or wipe all security data when deactivating<\/li>\n<li><strong>Zero phone-home<\/strong> \u2014 No telemetry, no tracking, fully GDPR-compliant (external services used only when explicitly enabled by the admin \u2014 see External Services section)<\/li>\n<\/ul>\n\n<h4>Why Atlant Security?<\/h4>\n\n<ul>\n<li><strong>All-in-one<\/strong> \u2014 Replaces 5-6 separate security plugins<\/li>\n<li><strong>No external dependencies<\/strong> \u2014 Core security features run locally on your server<\/li>\n<li><strong>Zero phone-home<\/strong> \u2014 No telemetry, no tracking (optional features like GeoIP use external services only when explicitly enabled \u2014 see External Services section)<\/li>\n<li><strong>GDPR-friendly<\/strong> \u2014 No external fonts, no CDN resources<\/li>\n<li><strong>Setup wizard<\/strong> \u2014 Configure core security in under 2 minutes<\/li>\n<li><strong>Clean uninstall<\/strong> \u2014 Removes all database tables and options when deleted (opt-in)<\/li>\n<li><strong>Safe Mode<\/strong> \u2014 Emergency override if you get locked out of your site<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following third-party services under specific conditions:<\/p>\n\n<h4>Cloudflare IP Ranges<\/h4>\n\n<p>When Cloudflare integration is enabled, the plugin periodically fetches the current list of Cloudflare edge IP ranges from Cloudflare's official endpoints. This is used to correctly identify visitor IP addresses behind the Cloudflare proxy and to whitelist Cloudflare edge servers.<\/p>\n\n<ul>\n<li>Data sent: No user data is sent. The plugin fetches publicly available IP range lists.<\/li>\n<li>When: Once per week via a scheduled cron job (aswp_refresh_cloudflare_ips), only when Cloudflare integration is enabled.<\/li>\n<li>Endpoints: https:\/\/www.cloudflare.com\/ips-v4 and https:\/\/www.cloudflare.com\/ips-v6<\/li>\n<li><a href=\"https:\/\/www.cloudflare.com\/terms\/\">Cloudflare Terms of Use<\/a><\/li>\n<li><a href=\"https:\/\/www.cloudflare.com\/privacypolicy\/\">Cloudflare Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>MaxMind GeoLite2 GeoIP Database<\/h4>\n\n<p>When GeoIP country detection is enabled and a MaxMind license key is configured, the plugin downloads the GeoLite2-Country database from MaxMind. This database is stored locally and used to resolve visitor IP addresses to country codes for display in the visitor log and dashboard.<\/p>\n\n<ul>\n<li>Data sent: Your MaxMind license key is sent to authenticate the download request. No visitor data is sent to MaxMind.<\/li>\n<li>When: On initial setup and once per week via a scheduled cron job (aswp_update_geoip_db), only when GeoIP is enabled and a license key is configured.<\/li>\n<li>Endpoint: https:\/\/download.maxmind.com\/app\/geoip_download<\/li>\n<li><a href=\"https:\/\/www.maxmind.com\/en\/geolite2\/eula\">MaxMind End User License Agreement<\/a><\/li>\n<li><a href=\"https:\/\/www.maxmind.com\/en\/privacy-policy\">MaxMind Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Google IP Ranges<\/h4>\n\n<p>When Google integration is enabled in the IP Whitelist, the plugin periodically fetches the current list of Google IP ranges from Google's official endpoint. This is used to automatically whitelist known Google infrastructure IPs (Googlebot, Google Cloud, etc.) so legitimate Google traffic is never blocked.<\/p>\n\n<ul>\n<li>Data sent: No user data is sent. The plugin fetches a publicly available JSON file containing Google IP ranges.<\/li>\n<li>When: Once per week via a scheduled cron job (aswp_refresh_google_ips), only when Google integration is enabled.<\/li>\n<li>Endpoint: https:\/\/www.gstatic.com\/ipranges\/goog.json<\/li>\n<li><a href=\"https:\/\/policies.google.com\/terms\">Google Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Microsoft \/ Bing IP Ranges<\/h4>\n\n<p>When Microsoft integration is enabled in the IP Whitelist, the plugin periodically fetches the current list of Bing bot IP ranges from Microsoft's official endpoint. This is used to automatically whitelist known Bing crawler IPs so legitimate Bing traffic is never blocked.<\/p>\n\n<ul>\n<li>Data sent: No user data is sent. The plugin fetches a publicly available JSON file containing Bing bot IP ranges.<\/li>\n<li>When: Once per week via a scheduled cron job (aswp_refresh_microsoft_ips), only when Microsoft integration is enabled.<\/li>\n<li>Endpoint: https:\/\/www.bing.com\/toolbox\/bingbot.json<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/servicesagreement\/\">Microsoft Services Agreement<\/a><\/li>\n<li><a href=\"https:\/\/privacy.microsoft.com\/en-us\/privacystatement\">Microsoft Privacy Statement<\/a><\/li>\n<\/ul>\n\n<h4>WordPress.org Secret Key API<\/h4>\n\n<p>The Post-Breach Recovery module can generate new WordPress secret keys and salts using the official WordPress.org API. This is used when an administrator manually triggers the \"Rotate Secret Keys\" emergency action after a security breach.<\/p>\n\n<ul>\n<li>Data sent: No user data is sent. The plugin fetches randomly generated keys from the API.<\/li>\n<li>When: Only when an administrator manually triggers the \"Rotate Secret Keys\" action in the Post-Breach Recovery module.<\/li>\n<li>Endpoint: https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/<\/li>\n<li><a href=\"https:\/\/wordpress.org\/about\/domains\/\">WordPress.org Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/about\/privacy\/\">WordPress.org Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Slack Webhooks<\/h4>\n\n<p>When Slack notifications are enabled and a Slack webhook URL is configured, the plugin sends security alert messages to the specified Slack channel. This allows administrators to receive real-time security notifications in Slack.<\/p>\n\n<ul>\n<li>Data sent: Security alert messages containing the alert subject, description, severity level, site URL, and the IP address that triggered the alert. No visitor personal data or cookies are sent.<\/li>\n<li>When: Only when a security event occurs (e.g., brute force attempt, WAF block, honeypot trip) and Slack notifications are enabled.<\/li>\n<li>Endpoint: Administrator-configured Slack Incoming Webhook URL (e.g., https:\/\/hooks.slack.com\/services\/...)<\/li>\n<li><a href=\"https:\/\/slack.com\/terms-of-service\">Slack Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/slack.com\/privacy-policy\">Slack Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Custom Webhooks<\/h4>\n\n<p>When webhook notifications are enabled and a webhook URL is configured, the plugin sends security alert payloads in JSON format to the specified endpoint. This allows integration with any external monitoring or alerting system.<\/p>\n\n<ul>\n<li>Data sent: JSON payload containing the alert subject, description, severity level, site URL, timestamp, and the IP address that triggered the alert. No visitor personal data or cookies are sent.<\/li>\n<li>When: Only when a security event occurs and webhook notifications are enabled.<\/li>\n<li>Endpoint: Administrator-configured webhook URL.<\/li>\n<li>Terms and privacy: Determined by the third-party service the administrator configures.<\/li>\n<\/ul>\n\n<h3>Upgrade Notices<\/h3>\n\n<h4>1.1.2<\/h4>\n\n<p>New About page consolidates defense architecture and competitive features. Setup wizard no longer auto-redirects on activation. Dashboard is cleaner with focus on operational data.<\/p>\n\n<h4>1.0.7<\/h4>\n\n<p>Major UI overhaul: inner sidebar navigation replaces 23 WordPress submenu items with a clean, persistent sidebar panel. All page URLs remain the same \u2014 bookmarks still work.<\/p>\n\n<h4>1.0.4<\/h4>\n\n<p>Adds GeoIP country flags in visitor log, custom login URL, password policy enforcement, and Force SSL Admin setting. Internal prefix migration runs automatically \u2014 no action required.<\/p>\n\n<h4>1.0.3<\/h4>\n\n<p>Adds honeypot traps, security headers management, two-factor authentication, and notification channels. Fixes IP management and status code logging. Recommended update.<\/p>\n\n<h4>1.0.0<\/h4>\n\n<p>Initial release. Run the Setup Wizard after activation to configure your site's security.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>atlant-security<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Navigate to <strong>Atlant Security<\/strong> in the admin sidebar to access the dashboard.<\/li>\n<li>Optionally run the <strong>Setup Wizard<\/strong> from the sidebar to configure core security settings quickly.<\/li>\n<\/ol>\n\n<p>The Setup Wizard configures your WAF, login protection, hardening, visitor logging, and notifications. You can run it at any time from the inner sidebar navigation.<\/p>\n\n<h4>Minimum Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 8.0 or higher<\/li>\n<\/ul>\n\n<h4>Safe Mode<\/h4>\n\n<p>If you ever get locked out of your site, add this line to <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'ASWP_SAFE_MODE', true );\n<\/code><\/pre>\n\n<p>This disables all blocking features (custom login URL, IP blocking, WAF, rate limiting) while keeping the admin interface accessible so you can fix settings.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"i%20locked%20myself%20out%20with%20the%20custom%20login%20url\"><h3>I locked myself out with the Custom Login URL<\/h3><\/dt>\n<dd><p>Add <code>define( 'ASWP_SAFE_MODE', true );<\/code> to your <code>wp-config.php<\/code>. This disables all blocking features while keeping the admin accessible. Alternatively, rename the plugin folder via FTP to <code>atlant-security-disabled<\/code>, log in normally, rename it back, then whitelist your IP.<\/p><\/dd>\n<dt id=\"the%20waf%20is%20blocking%20my%20page%20builder%20%28elementor%2C%20divi%29\"><h3>The WAF is blocking my page builder (Elementor, Divi)<\/h3><\/dt>\n<dd><p>Switch WAF to <strong>Log Only<\/strong> mode, reproduce the issue, then check the <strong>Audit Log<\/strong> for the triggered rule. Page builders may trigger false positives due to base64-encoded content in their save payloads.<\/p><\/dd>\n<dt id=\"users%20keep%20getting%20logged%20out%20unexpectedly\"><h3>Users keep getting logged out unexpectedly<\/h3><\/dt>\n<dd><p>This is caused by Session Binding with IP binding enabled. Go to <strong>Session Security<\/strong> and disable \"Bind to IP\" while keeping \"Bind to User-Agent\" enabled. Mobile and VPN users frequently change IPs. You can also enable \"Exempt Administrators\" to bypass all session restrictions for admin users.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. The WAF runs at <code>init<\/code> priority 0 with optimized pattern matching. Rate limiting uses APCu when available for microsecond lookups. The visitor log is a single lightweight INSERT per request.<\/p><\/dd>\n<dt id=\"email%20notifications%20are%20not%20arriving\"><h3>Email notifications are not arriving<\/h3><\/dt>\n<dd><p>WordPress default <code>wp_mail()<\/code> uses PHP mail() which many hosts block. Install an SMTP plugin like <strong>WP Mail SMTP<\/strong> or <strong>FluentSMTP<\/strong> to route emails through a proper mail provider.<\/p><\/dd>\n<dt id=\"the%20malware%20scan%20is%20running%20slowly\"><h3>The malware scan is running slowly<\/h3><\/dt>\n<dd><p>Reduce \"Files per Batch\" to 20-30 on shared hosting. The scanner processes files in AJAX batches to avoid timeouts. Files larger than 5 MB are automatically skipped.<\/p><\/dd>\n<dt id=\"how%20does%20the%20honeypot%20protect%20legitimate%20crawlers%3F\"><h3>How does the honeypot protect legitimate crawlers?<\/h3><\/dt>\n<dd><p>Three layers of protection: (1) Trap URLs are added as Disallow rules in robots.txt, (2) hidden links use rel=\"nofollow\", and (3) 35+ known-good bot user agents (Googlebot, Bingbot, etc.) are pattern-matched and receive a 404 instead of a ban. AI crawlers marked \"allowed\" in your settings are also protected.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20with%20multisite%3F\"><h3>Does this plugin work with multisite?<\/h3><\/dt>\n<dd><p>The plugin is designed for single-site WordPress installations. Multisite support is planned for a future release.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20deactivate%20the%20plugin%3F\"><h3>What happens to my data when I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Nothing is deleted on deactivation. When you delete the plugin, a dialog asks whether to keep or remove all data. You can also control this in Settings &gt; \"Delete data on uninstall\".<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Added: About page with 5-Layer Defense Architecture, competitive features list, attack vector coverage, and plugin information<\/li>\n<li>Improved: Dashboard decluttered \u2014 informational panels moved to About page for a cleaner operational view<\/li>\n<li>Improved: About page lists 15 unique competitive features with descriptions<\/li>\n<li>Fixed: Setup wizard no longer auto-redirects on plugin activation or reactivation<\/li>\n<li>Fixed: Setup wizard accessible from sidebar navigation at any time<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Improved: Visitor log table uses percentage-based column widths for fluid layout across screen sizes<\/li>\n<li>Improved: Filter bar and results info bar spacing tightened<\/li>\n<li>Fixed: Setup wizard admin notice removed \u2014 no longer floats above page layout<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Improved: Stat cards compacted \u2014 smaller icons, tighter padding, reduced font sizes<\/li>\n<li>Improved: Page header, grid column, and IP list padding reduced for denser layout<\/li>\n<li>Fixed: Session timeout now correctly respects \"Exempt Administrators\" setting for idle timeout and session fingerprint binding (was only checked for concurrent session limits)<\/li>\n<li>Fixed: Session security settings description updated to reflect full admin bypass scope<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Improved: Inner sidebar width reduced from 240px to 200px with tighter item padding<\/li>\n<li>Improved: Table headers shortened (IP Address &gt; IP, Country &gt; flag only, etc.)<\/li>\n<li>Improved: Top IPs widget uses compact 24x24px icon buttons instead of full-width buttons<\/li>\n<li>Improved: Dashboard grid right column uses responsive minmax sizing<\/li>\n<li>Improved: Page content padding and table cell padding reduced globally<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Fixed: Visitor log column widths \u2014 JS table-resize no longer overrides CSS-defined column classes<\/li>\n<li>Fixed: Added CSS column width classes to all table headers (visitor log + dashboard live visitors)<\/li>\n<li>Fixed: Dashboard live visitors table shows flag only (removed redundant country code text)<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Added: Inner sidebar navigation (Nexus SEO style) \u2014 all plugin pages accessible from a persistent left panel<\/li>\n<li>Added: WordPress sidebar shows single \"Atlant Security\" entry instead of 23 submenu items<\/li>\n<li>Added: Sidebar brand header with logo, active page highlighting, version footer<\/li>\n<li>Added: Responsive sidebar \u2014 collapses to horizontal nav on screens below 1024px<\/li>\n<li>Fixed: Plugin footer now renders inside page layout instead of WP's admin footer area<\/li>\n<li>Fixed: \"Sorry, you are not allowed to access this page\" error caused by removing WordPress $submenu entries \u2014 now uses CSS-based hiding to preserve permission checks<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Improved: All plugin admin pages now send no-cache headers to prevent stale data from caching plugins<\/li>\n<li>Fixed: Top Pages widget CSS class mismatch causing broken styling<\/li>\n<li>Fixed: Top IPs widget now excludes whitelisted IPs from the list<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: decodeEntities function scoping bug in admin.js causing HTML entity rendering issues<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Added: GeoIP country resolution \u2014 MaxMind GeoLite2-Country integration with pure-PHP MMDB reader, auto-download, weekly auto-update, and dedicated admin page with test lookup<\/li>\n<li>Added: Custom Login URL module \u2014 move wp-login.php to a custom slug with automatic redirect of the default login page<\/li>\n<li>Added: Password Policy module \u2014 configurable minimum length, character requirements, common password blocking, and passphrase generator<\/li>\n<li>Added: Force SSL Admin as a plugin-managed setting (defines FORCE_SSL_ADMIN constant at runtime)<\/li>\n<li>Added: Auto-Update Plugins and Auto-Update Themes toggles in Settings and Hardening checklist<\/li>\n<li>Improved: Admin sidebar pages reordered alphabetically for easier navigation<\/li>\n<li>Improved: Post-Breach Command Center layout \u2014 lockdown status widget moved into Critical Actions grid<\/li>\n<li>Improved: Hardening checklist \u2014 Force SSL Admin now toggleable from the checklist (was \"Manual fix required\")<\/li>\n<li>Fixed: Post-Breach page SQL queries referenced nonexistent table name (aswp_ip_blocks &gt; aswp_blocked_ips)<\/li>\n<li>Fixed: Post-Breach blocked IP count query used wrong column names (expires_at &gt; permanent\/blocked_until)<\/li>\n<li>Fixed: Database migration duplicate-key error that broke all AJAX endpoints (visitor log, dashboard widgets)<\/li>\n<li>Fixed: Settings loss on plugin reactivation \u2014 WAF mode, auto-blocks, and setup wizard no longer reset<\/li>\n<li>Fixed: Timezone mismatch between stat cards and live visitors (gmdate\/NOW vs current_time)<\/li>\n<li>Fixed: Text domain loaded too early warning on WordPress 6.7+ (moved to init hook)<\/li>\n<li>Fixed: Plugin deletion wiped all data \u2014 uninstall now requires explicit opt-in via deactivation dialog or Settings toggle<\/li>\n<li>Fixed: ALTER TABLE ADD INDEX SQL errors corrupting AJAX JSON responses when WP_DEBUG_DISPLAY is on<\/li>\n<li>Fixed: Consistent timezone handling across all 12 modules<\/li>\n<li>Fixed: Correlated subquery in update_blocked_counts cron job \u2014 replaced with single JOIN<\/li>\n<li>Fixed: Daily digest cron hook not cleared on plugin deactivation<\/li>\n<li>Fixed: GeoIP database directory cleanup in uninstall.php<\/li>\n<li>Internal: Complete codebase prefix migration from fwwp_ to aswp_ with automatic database migration on upgrade<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added: Honeypot module with hidden link trap, fake login page, comment honeypot, CF7 integration<\/li>\n<li>Added: 3-layer safe bot protection for honeypots (robots.txt, nofollow, UA detection)<\/li>\n<li>Added: Security Headers admin page with letter-grade scoring<\/li>\n<li>Added: Two-Factor Authentication admin page with TOTP and Email OTP<\/li>\n<li>Added: Notifications admin page (Email, Slack, Webhook, Daily Digest)<\/li>\n<li>Fixed: Top IPs widget now shows VirusTotal link, Block button, and Details button<\/li>\n<li>Fixed: IP Detail Modal \u2014 added max-height, scroll, wider layout<\/li>\n<li>Fixed: Blocked IPs now correctly log 403 status code instead of 200<\/li>\n<li>Fixed: TwoFA role handling for comma-separated role strings<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added: 5 new security modules \u2014 AI Crawlers, REST API Policies, Session Security, Outbound Monitor, Cron Guard<\/li>\n<li>Added: 5 new admin pages with full settings UI for each module<\/li>\n<li>Improved: Dashboard with live visitors auto-refresh, traffic chart, top IPs\/pages widgets<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added: Setup Wizard with 7-step guided configuration<\/li>\n<li>Added: IP Detail Modal on Dashboard<\/li>\n<li>Improved: Dashboard stat cards, browser distribution chart<\/li>\n<li>Fixed: Setup wizard pagination and button responsiveness<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with 17 security modules<\/li>\n<li>Web Application Firewall with 28+ attack pattern rules<\/li>\n<li>Brute force protection with progressive lockout<\/li>\n<li>Malware scanner (file and database)<\/li>\n<li>Post-breach recovery toolkit (12 actions)<\/li>\n<li>IP blocking and whitelisting<\/li>\n<li>Visitor log with filtering and pagination<\/li>\n<li>Admin audit log<\/li>\n<li>WordPress hardening (6 toggles)<\/li>\n<li>Rate limiter (11 endpoint categories)<\/li>\n<li>Real-time security dashboard<\/li>\n<\/ul>","raw_excerpt":"Enterprise-grade WordPress security: WAF, brute force protection, malware scanner, 2FA, honeypots, AI crawler control, and post-breach recovery.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/288391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=288391"}],"author":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/xorred"}],"wp:attachment":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=288391"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=288391"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=288391"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=288391"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=288391"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=288391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}