问题描述
我最近听到有人说 WordPress 确实发送有关您的博客的数据回到家。真的吗?如果是这样的话,代码中的哪些数据可以看到交换的内容?
最佳解决方案
是的,它确实。见 Ticket #16778 wordpress is leaking user/blog information during wp_version_check()。所有细节都在/wp-includes/update.php
中:
if ( is_multisite( ) ) {
$user_count = get_user_count( );
$num_blogs = get_blog_count( );
$wp_install = network_site_url( );
$multisite_enabled = 1;
} else {
$user_count = count_users( );
$user_count = $user_count['total_users'];
$multisite_enabled = 0;
$num_blogs = 1;
$wp_install = home_url( '/' );
}
$query = array(
'version' => $wp_version,
'php' => $php_version,
'locale' => $locale,
'mysql' => $mysql_version,
'local_package' => isset( $wp_local_package ) ? $wp_local_package : '',
'blogs' => $num_blogs,
'users' => $user_count,
'multisite_enabled' => $multisite_enabled
);
$url = 'http://api.wordpress.org/core/version-check/1.6/?' . http_build_query( $query, null, '&' );
$options = array(
'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ),
'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ),
'headers' => array(
'wp_install' => $wp_install,
'wp_blog' => home_url( '/' )
)
);
$response = wp_remote_get($url, $options);
用户代理包含安装的 URL,因此所有这些数据不再是匿名的。为了获得一些隐私的权限,过滤'http_request_args'
并更改您不想泄露的数据。
这是一个简单的例子来匿名的 UA 字符串 (从 recent blog article):
add_filter( 'http_request_args', 't5_anonymize_ua_string' );
/**
* Replace the UA string.
*
* @param array $args Request arguments
* @return array
*/
function t5_anonymize_ua_string( $args )
{
global $wp_version;
$args['user-agent'] = 'WordPress/' . $wp_version;
// catch data set by wp_version_check()
if ( isset ( $args['headers']['wp_install'] ) )
{
$args['headers']['wp_install'] = 'http://example.com';
$args['headers']['wp_blog'] = 'http://example.com';
}
return $args;
}
你可以把它改成…
add_filter( 'http_request_args', 't5_anonymize_ua_string', 10, 2 );
… 并将请求 URL 作为回调的第二个参数。现在,您可以检查该 URL 是否包含 http://api.wordpress.org/core/version-check/
,并将所有值更改为想要取消请求并发送一个新的值。仍然没有办法只改变 URL,这就是为什么我在票证中创建补丁。
次佳解决方案
当我使用.org API(安装/搜索/更新) 时,WordPress 将版本数据发送回.org 。然后将该数据整理成图表图形。您可以看到数据 here 。我假设在绘制环境要求的路线图 (即 PHP4> PHP5,MySQL 版本支持等) 时也会使用此选项。
以下是.org 统计资料的样例:
作为附注,您始终必须从可信来源安装插件。 Otto 和插件目录的其他策展人已经做了很好的工作,除掉使用 base64 + eval 的插件将个人信息发送回不道德的插件作者。我可以保证有一些在存储库中每周弹出一次。这适用于.org 回购以外的主题。
我听说过创建一个插件审核小组 (类似于主题审查小组),这将确保未来存储库的完整性。您可以加入 wp-hackers 邮件列表和 get more information there 。这就是这些类型的讨论真的被充实了。
第三种解决方案
是的,你是对的。 wordpress 更新检查程序,插件更新检查程序和主题更新检查程序发送有关的常规信息
- 你的 IP
- 博客网址
- WordPress 版本
- PHP 版本
- 如果有一个区域设置
- 插件标题,说明,作者 – 包括构成其中一部分的所有 URL 。
- 您的网站上的所有插件的完整列表,无论它们是否活动。
到 api.wordpress.org 网站。这是 2007 年以来的一个老讨论。您可以在我的帖子 WordPress phone home – Spyware or Justified 的帖子中阅读更多内容。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。