在服务器上托管高级WordPress插件以进行自动更新

时间:2017-04-03 12:53:58

标签: php wordpress

我遵循了如何在服务器上托管(高级)插件以进行自动更新的指南。一切正常,但根本不安全。插件的ZIP链接是公开的,任何人都可以下载。

以下是update.php文件(在我的服务器上)的样子:

{{1}}

如果没有提供POST参数(版本,信息或许可证),脚本将始终返回.zip文件。

所有我想要的是有一个参数发送到update.php,当WordPress请求新的.zip时,我就可以授权下载。

即使有人知道这个过程的记录在哪里,这也会有很大的帮助。

1 个答案:

答案 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==