問題描述

我最近聽到有人説 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。