Ready to get started?Download WordPress

Plugin Directory

iThemes Security (formerly Better WP Security)

The easiest, most effective way to secure WordPress in seconds.


  • Fixed an inadvertant disabling of file change scans intrudced in 4.3


  • Added on-demand malware scanning for the homepage
  • Added better URL validation to ITSEC_LIB
  • Added exception for to prevent a local server from being locked out of a site during wp-cron or other calls
  • Added button to quickly add current IP address to permanent whitelist
  • Added appropriate message for logs page when logs are not available due to "file only" logging being selected
  • Fixed Error in 404 scanning if path field was empty
  • Updated hackrepair.com's default blacklist
  • Modified support reminder to ask users to upgrade rather than donate
  • Use get_home_path() in place of ABSPATH to account for WordPress core in a different directory than wp-content
  • Use PHP comments in index.php file to account for the possibility of a scan including the file in which case the html comment could result in an error
  • Fixed various typos throughout the plugin dashboard
  • Added ability to prevent file change scanning from running on a given page load by defining ITSEC_FILE_CHECK_CRON to true
  • Cleaned up file change logging reports to me more clear when no files have been changed
  • Added feature to immediately ban user "admin" when no user "admin" exists on the site and a host tries to log in with it anyway
  • Added blank line to end of all textarea input to make it easier to input data
  • Added brute force checks to XMLRPC calls to prevent brute force attacks against XMLRPC


  • Fixed a bug preventing file-change scanning from running when manually executed from the "Logs" page
  • Fixed a bug where an error could be generated if the saved files from the file change feature weren't properly saved
  • Fixed comment approval email links to make sure they work when a user is not logged in and hide backend is in effect
  • Fixed an issue that was preventing an IP from being permanently banned due to too many lockouts
  • Updated .htaccess rules for an IP that has been banned from too many lockouts to be more effective in more hosting environments
  • Fixed responsive issues in iThemes notifications that prevented notifications from being easily read on small screens.


  • Fixed error for missing function in hide backend


  • Fixed an error that could cause a 404 on the admin with hide-backend enabled.


  • Fixed error on line 55 of class-itsec-four-oh-four.php that could occur under certain circumstances


  • Don't filter hide backend hash until after schema redirect
  • don't send file change email on first scan
  • Fixed verbage when changing login URL
  • Modified ban users rewrites for apache. Should work with proxy and if setenvif isn't enabled.
  • Fixed get_module_path to prevent 404 errors on plugin assets
  • Fixed misplaced parenthesis forcing computer to always display it isn't whitelisted
  • Updated readme.txt


  • Added call to settings import/export module (pro)
  • Added button to restore default log location
  • Don't automatically load front-end classes in dashboard pages
  • Avoid errors on save if htaccess is completely empty
  • Only register activation/deactivation/install hooks in admin
  • Make sure temporary white-list is always available
  • Improved check for white-listed IP during lockout
  • Added ability to use constant to override server detection
  • Don't remove extra line spaces in .htaccess
  • Minor reformating and typo fixes
  • Make sure front-end classes are available only when needed
  • Fixed default types in file change settings
  • Added file type exclusion to 404 settings
  • Allow for Jetpack SSO to function with suspicious queries turned on
  • Use WordPress' PclZip for backup zip


  • Make sure backup disables itself when other backup solutions are present
  • Fix tweet link
  • Minor fixes and cleanup
  • Added call to two-factor module


  • Consolidate white lists into one option
  • Fix IP mask calculations
  • Fix NGINX IP range blocking
  • Update modules to use new logging
  • Minor refactoring
  • Add metabox for iThemes Sync
  • Update jQuery version in tweaks
  • Shortened file change array names to save space
  • Fixed links in lockout emails
  • Fixed IP mask calculations
  • Add call to pro user-logging module
  • Add ability to temporarily whitelist an IP address


  • Don't allow empty file types in file change exclusions
  • Add Sync integration for Away Mode
  • Minor typo and other fixes
  • Better cache clearing and formatting updates
  • Make sure rewrite rules are updated on this update
  • Remove extra (settings) items from admin bar menu (leave logs and important information)
  • Add WP_CONTENT_DIR to system information on dashboard
  • Move support nag to free version only and make sure it properly redirects
  • Fix check for presence of BackupBuddy to work with BackupBuddy >=
  • Clean up details views on log pages
  • Add username column to temp and lockouts tables
  • Lockout usernames whether they exist or not
  • Don't duplicate lockouts
  • Fixed malformed lockout error on lockout message
  • Don't display a host lockout when none exists
  • Add Sync integration to release lockouts
  • Improved reliability of brute force user lockouts


  • Miscelaneous typos and other fixes
  • Remove extra file lock on saving .htaccess, nginx.conf and wp-config.php. Only flock will be used in these operations
  • Fixed a function not found error in the brute force module
  • Improved content filtering in SSL so that more images and other content will link with appropriate protocol.
  • Fixed hide backend in cases where a lockout has expired
  • Miscelaneous typos and other fixes.


  • Make sure "remove write permissions" works
  • Better descriptions on white list
  • Add pro table of contents if needed
  • Make sure security admin bar item works
  • Make sure lockout message only happens when needed
  • Suppress errors on readlink calls
  • Make sure class is present for permanent ban
  • Make sure white list is an array
  • Fix white listed IPs not working
  • Log when Away-mode is triggered
  • Make sure away mode file isn't accidently deleted
  • Make sure away mode doesn't even allow access to the login form (as it didn't in 3.x)
  • Enhance warnings on "Change content directory" settings
  • Better descriptions on white lists
  • Fixed XMLRPC label
  • Better XMLRPC Dashboard status
  • Don't allow logout action on wp-login.php with hide backend
  • Better check for variable in SSL admin


  • XMLRPC soft block should now work with WordPress mobile app
  • Make sure uploads directory is only working in blog 1 in multisite
  • Better checks for run method in module loader


  • Make sure backup directory is present before trying to use it
  • Make sure backup file method is respected on all backup operations
  • Added ability to limit number of backups saved to disk
  • Minor typo and other fixes
  • Only load front-end classes as needed
  • Add link to free support at .org forums
  • Remove select(?ed) from suspicious query strings for 3.9 compatibility
  • Fixed domain mapping issue (requires http://wordpress.org/plugins/wordpress-mu-domain-mapping/ domain mapping plugin)
  • Remove array type errors on 404 pages
  • Remove remaining create function calls
  • Make sure logs directory is present before trying to use it
  • Log a message when witelisted host triggers a lockout
  • Don't create log files if they're not going to be used
  • Add pro tab if pro modules need it
  • Upgrade module loader to only load what is needed


  • Fix sorting by count in 404 Logs
  • Minor code cleanup
  • Make sure all wp_enqueue_script dependencies are in proper format
  • Reduce priority of hide backend init for better compatibility with other plugins
  • SSL now logs users out when activating to prevent cookie conflicts
  • When activating SSL Log out the user to prevent cookie conflicts
  • Use LOCK_EX as a second file locking method on wp-config.php and .htaccess
  • Minor code cleanup
  • Make sure all wp_enqueue_script dependencies are in proper format


  • Added ability to "soft" block XMLRPC to prevent pingback vulnerability while still allowing other access
  • Updated "Suspicious queary strings" to not block plugin updates
  • Update NGINX comment spam rewrite rules to better work with multi-site domain mapping
  • Move 404 hook in hide backend from wp to wp_loaded
  • Make sure super-admin role is maintained on multi-site when changing user id 1 and admin username at the same time
  • Make sure all redirects for hide backend and ssl are 302, not 301
  • Better resetting of SSL and disallow file editor on deactivation to account for more states
  • Make sure hide backend works with registration
  • Minor copy and other fixes
  • Update nginx rewrite rule on comment spam when domain mapping is active
  • Added the ability to disable file locking (old behavior)
  • Better file lock release (try more than 1 method) before failing
  • Don't automatically show file lock error on first attempt
  • Added Spanish translation by Andrew Kurtis


  • Clean up away mode to prevent lockouts on update or other points


  • Make sure unset admin user field remains if the other setting has been fixed
  • Removed admin user from settings table of contents
  • Make sure array input is trimmed in file change module
  • Correct input type on file change settings sanitization
  • Use full URL on file change warning redirect to prevent invalid target
  • Reduce erroneous hide backend change warnings
  • When accessing htaccess or wpconfig make sure opening settings changes are 664 instead of 644 to reduce issues
  • Update hackrepair.com's Agents blacklist
  • Make sure global settings save button matches others
  • Fixed link in locout email
  • Email address settings retain end of line
  • Sanitize email addresses on save and not just use
  • Make sure whitelist is actually an array before trying to process
  • Make sure rewrite rules show on dashboard when file writing isnt allowed
  • Added extra information to dashboard server information to help troubleshooting


  • Fixed bug preventing file change scanning from advancing when chunked
  • Don't autoload file list on non-multisite installations
  • Make sure away mode settings transfer from 3.x or disable away mode
  • Better descriptions on save buttons
  • Admin use "Fix it" Correctly goes to advanced page


  • Execute permanent ban on the correct lockout count, not the next one
  • Updated quick ban rules to match standard ban rules (will work with proxy)
  • Fixed an NGINX rule that didn't actually block XMLRPC.php
  • Updated rule order on ban users
  • Fixed a bug that could prevent away from from turning off in certain time configurations (this resulted in the return to homepage on login)
  • Updated some function doc


  • Added "Show intro" button next to screen options to bring the intro modal back
  • Added ability to use HTML in error messages
  • Minor copy and other tweaks
  • Private posts will now work with hide backend
  • Added an option for custom login action that can bypass hide login
  • Allow admin-ajax.php to bypass hide backend
  • Added filters for external backup plugins to register with the dashboard
  • Enable theme compatibility mode by default
  • Miscellaneous copy and function doc fixes


  • only save post meta for ssl when the value is true
  • fixed missing admin user settings if only one part had been changed
  • SSL Redirection working properly on front end. No more redirect errors
  • hide backend will warn of the new url when saving
  • hide backend will now email the notification email(s) when the login area has been moved
  • Added BackupBuddy coupon
  • Added ability to manually purge log table


  • Removed error message that could happen on user creation with strong passwords enabled
  • Moved strong password js later in execution cycle to prevent errors
  • More hide backend tweaks to cover remaining white screen issues
  • Removed option to enqueue a new version of jQuery unless it is needed


  • Removed extra quotes that could appear in user agents
  • Removed error message on login page when jQuery replace in use
  • Don't use WordPress rewrites for hide backend, we now create our own rewrite rule
  • All modules now use newer upgrade method
  • Fix modal dismiss button on settings page
  • Ban users rules now should work with proxies
  • Saving settings will always generate and write rewrite rules if file writing is allowed
  • Hide backend now works with multisite and subdirectory installs
  • Make sure tables exist if manually updating from 3.x
  • Move admin user settings to advanced page
  • Make sure logout happens after processing admin user changes
  • All modules now rewritten to call rules on build
  • Rename backup and logs folders when wp-content is renamed
  • Delay file scan by at least 2 minutes when saving settings
  • Added "theme compatibility" mode to remove errors in hide backend caused by themes conflicting with the feature.
  • Fixed history.txt (for iThemes customers)
  • Moved upgrade to separate function for more seamless update
  • Upgrade system rewritten for better functionality
  • Make sure 404 doesn't fail if there is not a 404.php in the theme
  • Make sure WordPress root URLs render correctly
  • Filewrite now only builds rules on demand.
  • Fixed dismiss button on intro modal for small screens
  • General cleanup and typo fixing
  • New .pot file with updated iThemes .pot file generator


  • Fixed away mode not allowing PM times.
  • Fixed general copy typos.
  • Non super admins will no longer see the "Security" menu item in the admin bar on multisite.
  • Update to iThemes' icon-fonts library to account for ABSPATH set to '' or '/'.
  • Fixed relative paths on Windows servers.
  • Removed the pingback URL from the header if XML-RPC disabled.
  • Added file locking to admin user operations to [hopefully] avoid duplicated users.
  • 404 white list should transfer to global white list
  • White list implementation working across all lockouts
  • Add extra dismiss box to close welcome modal (fix for smaller screens)


  • Fixed bug in conversion of wildcard ip (ie 131.2.1.*) to proper netmask. Should prevent 500 errors on sites.


  • Fix for issue whereas a blank deny ip line could be entered into wp-config.php during update if banned users was used.


Better WP Security is now iThemes Security.

This release is a complete rewrite from the ground up. Special thanks to Cory Miller of iThemes.com and Chris Wiegman for realizing the vision for this plugin and how far we can go with it together.

  • New Security Features

    • jQuery Scanner looks for vulnerable versions of jQuery in your theme and gives you the option to replace it with the current version of jQuery from WordPress core.
    • Remove author archives for users without any posts. This helps prevent bots from finding users on your site.
    • Force a unique nicename. This forces the user to choose a Nickname that is different from the login name which will be used for the author slug and other appropriate areas.
    • Disable PHP execution in uploads.
  • Improvements

    • New UI with streamlined options and other settings
    • Hide features not in use
    • Smart feature selection for easier use
    • Central logs location
    • Ability to better customize notification and backup emails by sending to one or more addresses
    • Ability to save files anywhere on the host
    • Uses file-system locking for all critical operations
    • Global settings require setting options only once
    • Full BackupBuddy integration
    • Voluntary tracking of when options are turned on or off via Google Analytics
    • Hide backend no longer uses keys
    • Whitelist IPs for all lockouts
    • File change detection can run in batches for better resource usage
    • Backups can ignore unneeded table data such as logs
    • File change detection can ignore specified file types completely
    • All saved files now go to uploads
    • Ban users now has its own whitelist
    • Away mode and nearly all other features tweaked for speed and reliability
    • Module feature includes to accommodate future features as well as possibility of 3rd party features
    • No more insufficient permissions errors on settings tabs


  • Added notice about upgrade


  • Reintroduced InfiniteWP compatibility


  • Updated readme
  • Removed FooPlugins support box as iThemes begins integration of all support
  • Removed InfiniteWP Compatibility


  • Turned off iThemes Survey
  • Updated iThemes email subscription box


  • Fixed error message in above support widget when WordPress debug active.
  • Fixed error when creating user in iThemes Exchange


  • Fixed iThemes image path for case-sensitive
  • Add iThemes ITSEC survey to help plan further updates
  • Added Customizable email to support form


  • Added WP Security Lock as a partner for sites that have already been compromised.
  • Changed social information to iThemes
  • Better domain support (Mark Boudreau)
  • Add username to notification email (Andreas Geibert)
  • Changed author to iThemes
  • Added links to backup buddy and iThemes subscription
  • Fixed inconsistent count in logs
  • updated German translation by Rene Wolf


  • Updated Bulgarian translation by Martin Halachev
  • Removed all instances of the deprecated $wpdb->escape
  • Fixed possible XSS issue (Github Issue #64 with patch from i0wn)
  • Wrapped all wp_mail calls in function_exists checks as it no longer seems to be reliably available after plugins_loaded in WordPress 3.6
  • Minor refactoring
  • Added (.*) to Zues in hackrepair.com list to mitigate possible issues
  • Typo correction on SSL options courtesy of Roy Randolph.
  • Changed minimum version to 3.6


  • Fixed error that prevented manual backups from executing
  • Updated Turkish translation by Hakan Er
  • Updated shield logo by Martin Halachev
  • Minor fixes for strict warnings occuring when on PHP 5.4
  • Fix for lstat error for files in the ithemes-security/backups/ directory
  • Fixed an error that prevented manual filecheck


  • Bulgarian translation by Nikolay Kolev of Gymnastics and Bodyweight Tutorials
  • Chinese (Traditional) translation by Toine Cheung
  • Fixed an XSS vulnerability in the logevent function. Fix by Richard Warren
  • Updated Turkish by Hakan Er
  • 404 Logs now only accessible via the link on the logs page (thank you Marc-Alexandre Montpas)
  • Added .htaccess to protect saved backups (thank you Marc-Alexandre Montpas)
  • Added extra sanitization when downloading host info from database (was sanitized on upload) (thank you Marc-Alexandre Montpas)
  • Brazilian Portuguese translation by Rafael Funchal
  • German translation by Rene Wolf
  • Removed timezone from email lockout notifications (GitHub Issue #35)
  • Better variable checking to prevent error messages
  • Force user 0 when logging filechecking (GitHub Issue #7)
  • CSS update for MP6 from shivapoudel
  • Small tweak to prevent email notifications being sent when they shouldn't
  • Cleaned up variable checking throughout to eliminate activation errors if php errors or WP_DEBUG is turned on
  • Added further checks to reduce errors if file change log is invalid
  • Memory should now display correctly in file change email
  • Use maybe_unserialize instead of unserialize
  • Added option to filter foreign charcters as part of filter suspicious query string
  • Updated .pot file


  • Simplified Chinese by 海滨
  • Persian by Ibrahim Jafari
  • Typo correction by ihuston
  • Fixed Bit51 Google+ Link
  • Better proxy support for ban users by kalvindukes
  • Updated Spanish translation by Pablo Romero
  • Updated Readme
  • Updated .pot file


  • Fixed error message that could appear when creating backups
  • Correct Changelog not displaying correctly on WordPress.org after version 3.5.1


  • Replaced Turkish language version lost in when tagging 3.5 in the WordPress.org repository
  • Solved a conflict with other Bit51 plugins that use the common Bit51 class


  • Integrate with Foo Plugins support system
  • Fixed role translation call for Strong password enforcement
  • Turkish by Hakan Er
  • Random version number no longer strips unrelated GET variables for better compatibility
  • Upgrading no longer automatically rewrites .htaccess and wp-config resulting in much improved reliability
  • Fixed possible error when login fails and PHP is set to report errors to screen


  • Replaced feed with standard WordPress feed
  • Added better error checking for feed should Feedburner (or any other provider) kill it again


  • More secure user query thanks to John Cave
  • Greatly improved intl date handling by SCUDELLER Eric
  • Added: French translation by SCUDELLER Eric
  • Fixed: bug preventing Jetpack's Infinite Scroll from working with long URL protection


  • Fixed error message that may occur if InfiniteWP is not installed.


  • Added compatibility with InfiniteWP (http://infinitewp.com/)
  • Updated default ban list as it was a little too restrictive for my taste
  • Added export of 404 logs in .csv format (experimental)
  • Add X-Forwarded-For ability to IP logging
  • Minor bug and typo fixes


  • Updated usability on ban lists
  • Ban list threshold now triggered on hit and not 1 after


  • Replace database override of awaymode with wp-config constant
  • Filecheck override is now done through wp-config constant
  • Added option to generate new secret key in hide backend
  • Added Slovak translation by Erich Szabó
  • Possible Google Maps fix for Apache
  • Improved time handling for away mode, lockouts, logs, and more
  • Added Tagalog translation by Hanne of ​http://pointen.dk/
  • Various table updates from Michael Conover (@sidtheduck) at sidtheduck.com.
  • Load plugin as global to reduce multiple executions
  • Fixed rewrite rules for banned hosts
  • Updated .pot file
  • Other minor bugfixes and refactoring


  • fixed input vulnerability found at http://packetstormsecurity.org/files/116317/ithemes-security-3.4.3-Cross-Site-Scripting.html
  • fixed email address in footer information on backup screen
  • file check exclusions should now work properly for individual files.
  • One-click protection is now part of the install script.
  • Won't log or even check 404 if feature is off.
  • Don't clear cache during away check. Let's see instead if the transients …
  • Don't clear Supercache page cache on clear logs


  • Only clear WP Supercachce when full page cache clearing is required


  • Gravatars will no longer dissappear after changing user 1 id
  • Better cache clearing when changing options
  • Reworked away mode for better cache handling
  • Subdirectory redirects should now work
  • Fixed error message on logout
  • Fixed password reset email link
  • Will no longer duplicate IPs in ban list when entered via auto-ban
  • Minor style updates
  • Better namespacing in content.php
  • Removed from hackrepair.com blacklist
  • remove yandex from hackrepair.com blacklist


  • Clean all logs when checked
  • Better logic for SSL checking
  • Removed echo statement in Filecheck
  • Highly compressed NGINX rules
  • Added to "Filter Suspicious Query String" Logic


  • Added Russian Translation
  • Updated Hindi contributor to Outshine Solutions
  • Prevented file change warning from displaying to non-admins
  • Fixed error causing multiple backup emails
  • Added ability to change ID of user with ID 1
  • Fixed bug in plugin base url
  • Added extra warnings and "escape route" for away mode
  • Fixed hide backend issues since WordPress 3.4
  • Lookup IP addresses directly from logs
  • Fixed dbdelta errors on upgrade
  • Updated form styles and appearance
  • Added tabs to settings pages for increased usability
  • Duplicate IP addresses won't be saved to banned list
  • Wildcards now correctly save to banned list
  • Suppress errors on filecheck arrays
  • Fixed link to permalink settings in hide backend
  • Added extra save buttons to system tweaks
  • Added logging memory usage to filecheck
  • Updated readme.txt
  • Updated .pot


  • More checks to ensure blank "Deny from" lines don't appear in .htaccess
  • Added host and user agent blacklist by HackRepair.com
  • Changed "Options All -Indexes" to "Options -Indexes" in .htaccess rules
  • Added log view for all bad login attempts to view logs
  • Always show .htaccess and wp-config.php changes in Dashboard
  • Database backups no longer turn on automatically with one-click secure.
  • Replaced unique key in database tables with primary key (tested in 3.4)


  • Hindi translation by Outshine Solutions
  • Spanish translation by Pablo Romero


  • Lithuanian translation by Vincent G
  • Fixed bug that could allow blank hosts in .htaccess for ban users
  • Removed obsolete translations from before version 3.0
  • Fixed various typos
  • Numerous minor bug fixes
  • Support moved back to WordPress.org forums


  • Users can now specify email address for database backups
  • Fixed bug throwing error when saving changes to existing users
  • Corrected typo in intl hook
  • List banned IPs on separate lines for readability
  • Replaced all instances of WordPress with WordPress
  • Logs no longer show errors when records are cleared while viewing file change details
  • File check will no longer automatically enable on servers with low RAM
  • An extra database key has been introduced to easily disable file checking if it causes memory errors
  • updated .pot
  • Sanitize ALL server variables to prevent XSS vulnerability


  • Added configurable email address for all email notifications
  • Added ability to turn off dashboard warning for file check
  • Password reset form will now require strong passwords if configured
  • Ability to automatically blacklist an IP address after a specified number of lockouts
  • Various minor bugfixes
  • Turning off front-end ssl will stop ssl redirect loops in sites with an existing ssl implementation
  • Updated language and explanations for various features
  • Updated .pot


  • Fixed date offset in log views
  • Fixed site admin renaming for multisite users
  • Fixed typos throughout
  • Block concat MySQL command
  • Deny access to readme.txt in protect files
  • Fixed 404 table description
  • Added domain name to email notifications
  • Improved folder check login
  • Suppress error messages for file-check operations


  • Fixed 500 error when ban-users in enabled and IP or agents list are empty
  • Fixed error that logged bad logins and 404s even when features were turned off


  • Added choice to completely disable front-end SSL, enable per page, or enable site-wide
  • Fixed login URL on new user email when new user is created by an existing user and hide backend is enabled
  • Default all SSL to off for new installations
  • Fixed strong password roles to work correctly
  • A little 418 humor
  • Updated .pot file
  • Updated readme.txt


  • File checker checks for changed files
  • SSL for individual pages and posts
  • One-click protection removes all .htaccess and wp-config.php options
  • Option to not allow the plugin to write to .htaccess and wp-config.php
  • Tweaked NGINX rewrite rules
  • Moved SSL options to separate page for better usability
  • Tables now display in native WordPress format
  • Updated language throughout
  • Tweaked Apache rewrite rules
  • Various minor bug-fixes
  • New installation video (see plugin homepage)
  • Updated .pot file


  • Significantly less resource usage
  • Fixed white screen errors on load
  • Fixed backup scheduling errors
  • updated .pot file
  • numerous minor bugfixes


  • Displays log messages for all lockouts
  • Scheduled backup times can be much more easily customized
  • Setting wp-config.php and .htaccess to 0444 is now optional
  • Updated .pot file
  • Fixes to Apache/LiteSpeed rules and NGINX rules
  • Numerous minor bugfixes


  • Fixed bug with redundant backup caller in admin script


  • Better LiteSpeed support
  • Better database backup scheduling
  • Better line spacing in .htaccess and wp-config.php
  • WordPress 3.3.1 now required
  • Status area now links to proper options and not top of tweaks page
  • NGINX rule fixes
  • admin-ajax.php now works even with hide backend
  • error surpression on file operations
  • update .pot
  • Many language updates
  • Better update script for multisite installs


  • Fixed multi-site issue due to 3.0.8 update support fix
  • Fixed awaymode settings issues


  • Fixed improper php open tags
  • Fixed erroneous PHP_EOL in nginx rules
  • LiteSpeed support
  • Better update support (not relying on activation hook anymore)
  • Added abstract keyword to bit51.php
  • Removed itsec references in bit51.php
  • updated .pot file


  • Changed method of end of line character technique for better cross-platform server compatibility
  • Fixed 2 lines of <? in content.php replacing them with <?php


  • Another fix to the "line 2072" error. This would be a lot easier with a Windows host as those are the only folks that seem to have the issue


  • Changes to language on ban users page
  • fixed "line 2072" error


  • Changed IP banning to only accept * wildcards for ranges
  • All host banning is not done via server configuration rather than php
  • Numerous minor bugfixes


  • Fixed bug in backup file path


  • Fixed default options on saving
  • Fixed setup options
  • Other minor bugfixes


  • Turned off flag that caused plugin settings to reset on update.


  • Complete rewrite from the ground up
  • Menu changes
  • UI completely rewritten
  • Now supports NGINX
  • Scheduled database backups
  • Added ability to block user agents in addition to hosts
  • Numerous bugfixes


  • Another attempt to fix the login error that started with 2.16. Changed logic for determining hide backend feature.


  • Fixed an error that started with version 2.16 and prevented user from being able to login to the WordPress Dashboard.


  • Fixed login link in new user email after breaking it in version 2.15


  • Now loads all features at init to [hopefully] eliminate function not found errors


  • Bugfixes from 2.13
  • Removed randomized version for all logged-in users due to conflicts with admin-bar


  • Bugfixes from 2.12


  • Bugfixes from 2.11


  • Fixed login-slug in new user email
  • Fixed login slugs throughout site
  • Remove reset-password options
  • Improved rewrite rules (I would credit the author but I'm afraid in a bone headed move I never wrote down the author with the notes)
  • No longer loads pluggable


  • Added Romanian translation by Luke Tyler


  • readme.txt typo correction
  • Added ability to whitelist hosts and ip addresses for intrusion detection
  • intrusion detection now lists 404 errors found to help ease troubleshooting
  • intrusion detection now records referrer to make tracking 404 errors easier
  • corrected error when attempting to list multiple hosts when banning users


  • German Translation by Stefan Meier


  • Fixed a logic bug caused by changes in 2.7


  • Fixed a bug preventing login lockouts from releasing.


  • Added link to author of Italian Translation
  • Fixed bug preventing the "Ban Users" function from working.


  • Italian translation by Paolo Stivanin
  • Support information moved to separate page for easy access
  • Minor bug fixes


  • Fixed a bug that generated a 404 error when clicking the reset password link that is emailed to users
  • Added the option to customize the error message displayed for the login lockdown and intrusion detection lockouts


  • Fixed various typos
  • meta.php require_once now works correctly
  • fixed bug in which .htaccess and wp-config.php were not reporting correct permissions
  • Version is now hidden on admin pages except for multi-site


  • Emergency fix restoring version number display for backend as previous fix made multi-site installations unusable


  • Added options to customize intrusion detection to allow custom lockout duration and error threshold
  • Time now correctly displays for intrusion detection lockouts and lockouts are released at the correct time
  • Version number now hidden for all users without administrator role on backend
  • Saved hide backend key to database to allow for easier use in other plugins that link directly to wp-login.php (still has to be manually entered in each affected plugin)
  • Will now use the correct wp-config.php file if it is located outside of the directory used for the wordpress installation
  • Empties APC cache (when installed) after changing wp-content directory preventing the necessity to restart Apache
  • Fixed display bugs for login and intrusion lockout lists.


  • Now supported by Bit51.com
  • Removed blocking of http HEAD requests to improve integration with social networking APIs such as Twitter
  • French translation by Claude ALTAYRAC


  • Error message on lockouts more ambiguous
  • Added email notification for intrusion detection lockouts
  • Added Bahasa Indonesia (Indonesian) translation by Belajar SEO, Jasa SEO Indonesia


  • Minor bug fixes


  • Changed plugin description
  • Improved translation support
  • Added Turn off file editor in WordPress backend
  • Improved accuracy of version checking when upgrading
  • Ban Users now allows for more than just IP address, it has been renamed accordingly


  • Renamed detect 404s section to intrusion detection to include upcoming features
  • general spelling and grammer corrections
  • Moved configuration to network dashboard for multisite installations
  • Improved multisite support
  • Warns if .htaccess or wp-config.php files aren't writable where needed
  • Added icon to menu for easier identification
  • Cleaned up and refined status information


  • Fixed WLManifest link removal from header
  • Added nofollow to all meta links
  • "Away Mode" page now displays current time even when feature has not been enabled
  • Status page now shows system information
  • htaccess contents moved to status page
  • fixed fatal activation error affecting php 5.2 users


  • Meta links update correctly when changing backend links


  • Fixed another issue that prevented the "htaccess" options page from displaying on some hosts


  • Fixed an issue that prevented the "htaccess" options page from displaying on some hosts


  • Finished support for localization


  • Fixed bug that prevented cleaning old lockouts from database


  • More code documentation
  • Added warnings to changing content directory (until I can find a good way to update all existing content)
  • Added options to clean old entries out of the database
  • Fixed minor typos throughout


  • Updated Homepage


  • Fixed error for potential conflicts with old htaccess rules


  • Removed hotlinking protection as it has been deemed to be outside the scope of this project
  • Removed protocol from hide backend htaccess rules for consistency between http and https
  • Combined all httaccess rules into single iThemes Security Block
  • 404 check now ignores all logged in users


  • Fixed a bug that could erase part of the wp-config file= 0.12.BETA =

  • Changing content directories should no longer break sites that were upgraded from versions prior to 3.0


  • Update to project homepage and other minor changes


  • Removed WP version check from status page as it was redundant
  • On uninstall wp-content location will be returned to default
  • Fixed setup error
  • Error checking now correctly identifies database table prefix
  • Rendom version # generator now removes version number from scripts and css where it can (thanks to Dave for this)


  • Bug fixes
  • Internationalization improvements


  • Fixed more critical bugs


  • Fixed more critical bugs


  • Fixed 2 critical bugs


  • Major refactoring
  • Streamline database tables
  • Numerous bugfixes
  • Code documentation and continued internationalization prep


  • Changed the main menu name to "Security"
  • Minimum requirement raised to 3.0.2
  • Begun code documentation and intl prep


  • Numerous bugfixes
  • 404 check will NOT ban logged in users
  • Lockdown rules no longer apply to logged in users


  • Updated hidebe to handle standard logout links
  • Numerous other bugfixes


  • Finished status reporting
  • Force SSL for admin pages (on supporting servers)
  • Change wp-content path


  • Added security checklist
  • Added option to rename existing admin account
  • Added option to change DB table prefix
  • Various bugfixes


  • Added more htaccess security options
  • All htaccess options have been moved to their own page
  • Added simple intrusion detection based on 404s
  • Bugfixes and code optimization


  • Deactivating now removes all htaccess areas and turns off associated options
  • Enforce strong passwords for all users of a given minimum role
  • Minor bug fixes


  • Added various .htaccess options to strengthen file security
  • Modified "hide backend" rewrite rules to work with multi-site
  • Removed non-security hide-backend options
  • Various bug fixes
  • Renamed "General" options page to "System Tweaks" to avoid confusion
  • Added more options to clean up WordPress headers
  • Added options to remove plugin notifications from non-super admin users


  • Continued code refactoring and bug-fixes
  • Improved error handling and upgrade support
  • Combined status and support options pages


  • Added sanitization and validation to user input
  • Added "away mode" to limit backend access by time
  • Script no longer dies when logged out and instead returns to homepage.


  • Complete refactor of the existing code
  • Divided settings sections for better UX
  • Added htaccess checks
  • Redesigned options system for less database calls
  • Reduced table usage from 4 to 2
  • Added email notifications for login limiter
  • Added complete access blocker for login limiter


  • Added login limiter to limit invalid attempts
  • various Bug fixes


  • Corrected error display
  • Added registration rules regardless of whether registrations are on or off.
  • Added "Display random version to non-admins"
  • Fixed rewrite rules on hide admin urls so going to the admin slug will work whether the user is logged in or not
  • Added crude upgrade warning to warn of old (not so great) rewrite rules


  • Optimized and commented code
  • Added uninstall function
  • Numerous fixes to bugs and logic


  • First alpha release including simple feature set.

Requires: 3.9 or higher
Compatible up to: 4.0
Last Updated: 2014-7-28
Downloads: 2,705,229


4 stars
4.7 out of 5 stars


37 of 258 support threads in the last two months have been resolved.

Got something to say? Need help?



6 people say it works.
0 people say it's broken.

100,1,1 0,1,0 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1
100,1,1 100,2,2 100,1,1 67,3,2 100,1,1
50,2,1 100,1,1 0,1,0 100,4,4 75,4,3 100,3,3 100,4,4 100,4,4 100,1,1
100,2,2 100,1,1
67,6,4 75,8,6 100,1,1 50,2,1 67,3,2 50,4,2 100,2,2 67,3,2 100,1,1 50,2,1 75,8,6
83,6,5 100,1,1 0,1,0
100,2,2 0,1,0 0,1,0 0,1,0 0,1,0 57,7,4 100,1,1 67,6,4 20,5,1 100,7,7 17,6,1 100,1,1 50,2,1 60,5,3 100,1,1 67,3,2 100,2,2 100,1,1 67,6,4 86,7,6 100,6,6 100,2,2 93,14,13 100,14,14 67,3,2 100,1,1 100,1,1 100,1,1 100,2,2 0,1,0
82,11,9 100,4,4 100,19,19 81,21,17 100,7,7 100,1,1 100,1,1
100,6,6 86,21,18 100,1,1 100,1,1
88,26,23 29,41,12 69,59,41 94,17,16 98,50,49 100,2,2
100,11,11 96,129,124 100,2,2 71,14,10 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
95,42,40 100,1,1 67,3,2 100,1,1 100,1,1
87,68,59 100,16,16 92,78,72 100,35,35 100,4,4 100,6,6 90,51,46 65,20,13 67,3,2 100,1,1
91,33,30 93,15,14 100,11,11
82,34,28 100,42,42
89,37,33 100,8,8 100,4,4 100,1,1
100,2,2 100,28,28 96,26,25 0,1,0 0,1,0 100,1,1 0,1,0 0,1,0 100,1,1 100,1,1
68,19,13 100,7,7 63,24,15 90,10,9 88,8,7 71,7,5 82,11,9 50,10,5 100,3,3 53,19,10 0,2,0 100,2,2 35,43,15 100,2,2 33,3,1 27,44,12 100,7,7 55,11,6 50,2,1
100,3,3 88,8,7 100,7,7 100,4,4 100,1,1
100,6,6 100,1,1 100,1,1
60,5,3 100,5,5 82,11,9 78,9,7 80,20,16 80,10,8 100,1,1
80,5,4 100,4,4 63,8,5 88,16,14 95,20,19 64,14,9 89,9,8 100,16,16 100,6,6 100,4,4 100,6,6