PlugSeal

描述

PlugSeal gives administrators granular control over what each active plugin is allowed to do, inspired by Android app permissions and Flatseal for Flatpak. Each active plugin is listed in the settings page. For each plugin, administrators can allow or deny individual permissions with immediate effect. All permissions are allowed by default, so no existing functionality is broken until an administrator explicitly restricts it.

Permissions covered:

  • db:read / db:write — database queries via $wpdb
  • db:read:users / db:write:users — read and write access to user data (also covers wp_delete_user and wp_update_user)
  • http:outbound — outbound HTTP requests via the WordPress HTTP API
  • options:read / options:write — WordPress options via get_option / update_option (see limitations)
  • email:send — sending email via wp_mail()
  • cron:write — scheduling events via wp_schedule_event()
  • transients:write — writing transients via set_transient()
  • users:create — creating users via wp_create_user() (updates and deletes are covered by db:write:users)
  • rest:register — registering REST API endpoints via register_rest_route()
  • shortcode:register — registering shortcodes via add_shortcode()
  • rewrite:register — registering rewrite rules via add_rewrite_rule()
  • admin:menu — adding entries to the admin menu and submenus
  • dashboard:widget — adding dashboard widgets via wp_add_dashboard_widget()
  • hooks:frontend — hooking into frontend hooks (wp_head, wp_footer, the_content, wp_enqueue_scripts…)
  • hooks:admin — hooking into admin hooks (admin_head, admin_notices, admin_enqueue_scripts…)
  • hooks:auth — hooking into authentication hooks (wp_login, wp_logout, user_register, authenticate…)
  • hooks:content — hooking into content hooks (save_post, delete_post, pre_get_posts, wp_handle_upload…)
  • hooks:lifecycle — hooking into plugin and theme lifecycle hooks (activated_plugin, deactivated_plugin, switch_theme…)

Honest limitations:

This plugin intercepts official WordPress APIs by identifying the calling plugin via the PHP call stack. It cannot intercept calls made by WordPress core on behalf of a plugin — for example, when WordPress processes a settings form via options.php, the call stack contains core files rather than the plugin files.

Specific limitations:

  • options:read / options:write — work when a plugin calls these APIs directly from its own code (hooks, AJAX, cron). Do not block standard WordPress settings forms processed by options.php.
  • Filesystem access (file_get_contents, fopen, etc.) is not intercepted.
  • Direct mysqli connections, eval(), and raw PHP file functions bypass all interceptors.
  • wp_update_user() and wp_delete_user() are covered by db:write:users since they write directly to the users table.
  • admin_init is intentionally excluded from hooks:admin as it is too critical to block safely.

安装

  1. Upload the plugseal folder to /wp-content/plugins/.
  2. Activate the plugin through the Plugins menu.
  3. Go to Settings PlugSeal.
  4. Select a plugin and toggle individual permissions on or off.

常见问题

Does this work with Multisite?

No. Multisite is not supported in this version.

What happens to my data if I uninstall the plugin?

Data is preserved by default. To delete all data on uninstall, enable the option in the settings page before deleting the plugin.

Can a plugin bypass this system?

Yes, if a plugin makes direct database connections or filesystem calls without using WordPress APIs, or if WordPress core processes actions on its behalf. These are known limitations documented above.

评价

此插件暂无评价。

贡献者及开发者

「PlugSeal」是开源软件。 以下人员对此插件做出了贡献。

贡献者

「PlugSeal」插件已被翻译至 2 种本地化语言。 感谢所有译者为本插件所做的贡献。

帮助将「PlugSeal」翻译成简体中文。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志

更新日志

0.2.0 – 2025-05-30

  • Added “Reset to defaults” button per plugin.
  • Added Settings link to the plugin list page.
  • Added descriptions for all permissions.
  • Renamed hook categories.
  • Improved translation support.
  • Fixed untranslated strings in JavaScript.

0.1.0 – 2025-04-25

  • Initial release.