WordPress商业插件授权码通常序列化存储于wp_options表中,键名随机(如myplugin_pro_license_data),需通过LIKE查询定位后反序列化修改,且须注意PHP版本兼容性、长度校验及缓存清除。
WordPress 插件授权码存在数据库哪张表里?
绝大多数商业插件不会把授权码明文存进 wp_options 表的某个固定 option_name 下——它们通常用随机生成的 option_key(比如 myplugin_pro_license_data 或带哈希前缀的键),或者干脆存在自定义表里。更常见的是:授权信息被序列化后塞进 wp_options 的某个 option_value 字段,字段值看起来像 a:3:{s:7:"license";s:28:"xxxx-xxxx-xxxx-xxxx";...}。
直接搜 license 或 key 很容易漏掉,建议先查出插件注册的所有 option:
SELECT option_name FROM wp_options WHERE option_name LIKE '%pluginname%' OR option_name LIKE '%myplugin%';
再对疑似项执行 SELECT option_value FROM wp_options WHERE option_name = 'xxx'; 看内容是否含序列化结构。
反序列化修改前必须确认 PHP 版本和 unserialize() 兼容性
WordPress 本身不主动反序列化这些字段,但插件在运行时会调用 unserialize() 解析。PHP 7.4+ 默认禁用对象反序列化(unserialize() 的 allowed_classes 限制),而很多老插件的授权数据里藏有自定义类实例(比如 O:12:"LicenseData":...)。强行改完再存进去,插件启动时可能直接报 Fatal error: Uncaught Exception: Class not found 或静默失效。
- 先用
php --version确认服务器 PHP 版本 - 检查插件源码里有没有
unserialize($data, ['allowed_classes' => [...]])调用,没有就大概率不兼容新 PHP - 如果 option_value 是纯数组序列化(
a:3:{...}),且不含O:对象标识,风险较低
手动反序列化 → 修改 → 重序列化的安全操作步骤
别用在线反序列化工具粘贴敏感数据;用本地 PHP 小脚本最可控:
生产级WordPress REST API集成,用于管理文章、页面、媒体、WooCommerce产品、Elementor内容、SEO元数据、ACF及JetEngine字段
$raw = 'a:3:{s:7:"license";s:28:"OLD-KEY-HERE";s:4:"type";s:6:"pro";s:8:"expires";i:1735689600;}';
$data = unserialize($raw);
$data['license'] = 'NEW-KEY-HERE';
$data['expires'] = strtotime('+2 years');
$fixed = serialize($data); // 注意:必须用 PHP 自带 serialize(),不是 json_encode()
echo $fixed;关键点:
- 修改后必须用
serialize()重打包,不能手写字符串——长度字段(如s:28:中的28)必须精确匹配新内容字节数 - 中文或特殊字符要确保源数据是 UTF-8,否则
serialize()会算错长度导致解析失败 - 执行 SQL 更新前,先备份整行:
SELECT * FROM wp_options WHERE option_name = 'xxx';
改完数据库后插件仍提示“未授权”?检查缓存和校验逻辑
很多插件会在首次验证后把解密后的 license 状态缓存在 wp_options 的另一个 key 下(比如 myplugin_license_status),或者写进文件(wp-content/plugins/myplugin/cache/license.lock)。单纯改主授权字段没用。
- 清空插件自己的缓存:查代码中是否有
delete_option('myplugin_license_status')类调用,手动删对应 option - 检查插件是否校验服务器时间、域名绑定、API 连通性——改数据库绕不过这些运行时检查
- 部分插件每次加载都远程校验(哪怕本地有缓存),这种改库毫无意义
真正起效的前提是:插件把授权状态完全依赖数据库字段,且不做二次校验。这点得翻插件源码确认,不是所有插件都这样。

















