我遵循了如何在服务器上托管(高级)插件以进行自动更新的指南。一切正常,但根本不安全。插件的ZIP链接是公开的,任何人都可以下载。
以下是update.php文件(在我的服务器上)的样子:
{{1}}
如果没有提供POST参数(版本,信息或许可证),脚本将始终返回.zip文件。
所有我想要的是有一个参数发送到update.php,当WordPress请求新的.zip时,我就可以授权下载。
即使有人知道这个过程的记录在哪里,这也会有很大的帮助。
答案 0 :(得分:0)
这是 WordPress 在安装新插件时向其服务器发出POST
请求的方式。
array (
'method' => 'POST',
'timeout' => 15,
'redirection' => 5,
'httpversion' => '1.0',
'user-agent' => 'WordPress/4.7.3; http://example.com/',
'reject_unsafe_urls' => false,
'blocking' => true,
'headers' =>
array (
),
'cookies' =>
array (
),
'body' =>
array (
'action' => 'plugin_information',
'request' => 'O:8:"stdClass":4:{s:4:"slug";s:7:"jetpack";s:6:"fields";a:1:{s:8:"sections";b:0;}s:8:"per_page";i:24;s:6:"locale";s:5:"en_US";}',
),
'compress' => false,
'decompress' => true,
'sslverify' => true,
'sslcertificates' => '/var/www/html/wp2/wp-includes/certificates/ca-bundle.crt',
'stream' => false,
'filename' => NULL,
'limit_response_size' => NULL,
)
根据您的问题,您可以通过他的安全令牌(首选)或电子邮件ID验证用户
因此,每当他安装插件时,您需要在服务器上创建一个安全令牌并将其发送到您的插件,然后在每次调用后请求插件存储到WordPress的数据库中( wp_option 更好) make到服务器,你需要验证令牌是否有效否则拒绝请求。
您需要更改代码以验证 POST 中的有效数据,而不是盲目检查 POST 数据
您可以在标头中发送令牌
示例:Authorization: Basic dm9yZGVsOnZvcmRlbA==