Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/rbncore/wpsecuritykit/releases/download/0.1.2/securitykit-0.1.2.zipSecurityKit
SecurityKit closes the public doors of a WordPress site — response headers, XML-RPC, user enumeration, version details, the theme/plugin file editor and repeated login attempts — one switch at a time. Nothing is on after installation: the site behaves exactly as before until you turn a module on.
AdminKit is required
SecurityKit does not work without the AdminKit plugin. Its header declares Requires Plugins: adminkit.
- On WordPress 6.5 and later WordPress refuses to activate SecurityKit while AdminKit is missing or inactive.
- A second check runs on every request: without AdminKit, or with an AdminKit older than core API level 4, SecurityKit adds no hook, prints nothing and shows one admin notice with a link to activate AdminKit (when installed) or to download it.
- AdminKit supplies the RBN Kit menu, the admin interface kit, the settings engine, the cache and log records, and the central updater.
Modules (all off by default)
| Module | What it does | Why it is safe to try |
|---|---|---|
| Security headers | nosniff, Referrer-Policy, Permissions-Policy, X-Frame-Options; HSTS and CSP as separate switches | A header the server already sends is never sent twice; HSTS and CSP are off by default |
| XML-RPC | closes XML-RPC, or only the multicall amplification | Jetpack calls can be kept open; the screen shows whether XML-RPC is open |
| User enumeration | closes /?author=N and /wp-json/wp/v2/users |
Logged-in users and the editor are not affected |
| Version details | removes the generator tag and the core ?ver= |
Theme and plugin versions stay, so caches keep working |
| File editor | closes the theme/plugin editor with map_meta_cap |
Does nothing when DISALLOW_FILE_EDIT is already defined |
| Login attempts | temporary lock after too many wrong passwords | Atomic counters, proxy trust switch, whitelist |
| wp-config.php advice | lists missing recommended constants | Read-only: the plugin never writes wp-config.php |
| Activity log | records sign-ins, user and role changes, plugin and theme changes, setting changes and blocked file-editor attempts in the central AdminKit log | Names and addresses are stored only as a daily salted digest; old rows are pruned nightly |
| E-mail alerts | one plain-text message on a new administrator, repeated failed sign-ins, a lockout or a protection switched off | Each event type is limited to one message per time window |
| Security score | one number 0–100 with the weakest points and the exact fix | Read-only: it changes nothing and contacts no external service |
How it works
- One list.
Registry::MODULESnames the modules; the screen, the settings schema and the boot loop are derived from it. - Off means not loaded. Each module has a small identity class (name, description, schema — always loaded because the single settings option must declare its fields) and a
Runtimeclass with the hooks. TheRuntimefile is loaded only while the module is on; the testtests/modul-sozlesmesi-test.phpproves it. - One settings option.
securitykit_settings, nested by module (headers.nosniff). Reading, validation and saving are the AdminKit settings engine's job; the plugin only declares the schema. - No table. Deleting the plugin removes the option only when “delete the settings” was switched on.
Requirements
- WordPress 6.5 or later
- PHP 8.1 or later
- AdminKit, installed and active (
Requires Plugins: adminkit)
Updating
Updates come from the official releases on GitHub and appear on the Plugins page like any WordPress update. The package is verified (SHA-256 + signature) by the AdminKit updater before installation.
Development
- Design and module contract:
docs/tasarim.md - Tests (real WordPress + MySQL):
tests/modul-sozlesmesi-test.php,tests/ayar-motoru-test.php,tests/uninstall-test.php— the uninstall layer also runs insideadminkit/tests/uninstall-kapi-test.php. - Source layout:
src/is the plugin and its own git repository;tests/anddocs/live in the workspace repository.
License
GPL-2.0-or-later. See LICENSE and NOTICE.
Releases
2 releases. Each count is every asset in that release; expand a row for the breakdown.