隐藏站点正在使用WordPress的事实?

时间:2010-09-08 作者:Casebash

我有一个网站,我们在使用WordPress这一事实上尽量谨慎。我们可以采取哪些措施使其不那么明显?

这句话的意思是:EDIT- Important security note:

请理解,按照Mark的要求,完美地完成这项工作是不可能的answer, 因此,不要将此作为安全措施。

12 个回复
最合适的回答,由SO网友:Chris_O 整理而成

WordPress最大的赠品是<head> </head> 标签。

Example WordPress head content output by The Twentyten Theme and how to remove:

<link rel="profile" href="http://gmpg.org/xfn/11" /> 
直接从收割台上拆下。php

 <link rel="stylesheet" type="text/css" media="all" href="http://example.com/wp-content/themes/twentyten/style.css" /> 
通过从其他位置调用样式表来隐藏WordPress,并更改wp内容目录。WordPress要求主题在样式顶部包含一些基本信息。css(style.css必须位于主题根目录中)。您将需要创建一个备用CSS,并从头调用它。WordPress不要求您使用主题样式。css它只要求它位于主题目录中。

直接从收割台上拆下。php

<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Feed" href="http://example.com/feed/" /> 
<link rel="alternate" type="application/rss+xml" title="Example Blog &raquo; Comments Feed" href="http://example.com/comments/feed/" />    
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.com/xmlrpc.php?rsd" /> 
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.com/wp-includes/wlwmanifest.xml" /> 
<link rel=\'index\' title=\'Example Blog\' href=\'http://example.com/\' /> 
<meta name="generator" content="WordPress 3.1-alpha" /> 
要删除这些额外链接,可以向函数添加过滤器。php

// remove junk from head
remove_action(\'wp_head\', \'rsd_link\');
remove_action(\'wp_head\', \'wp_generator\');
remove_action(\'wp_head\', \'feed_links\', 2);
remove_action(\'wp_head\', \'index_rel_link\');
remove_action(\'wp_head\', \'wlwmanifest_link\');
remove_action(\'wp_head\', \'feed_links_extra\', 3);
remove_action(\'wp_head\', \'start_post_rel_link\', 10, 0);
remove_action(\'wp_head\', \'parent_post_rel_link\', 10, 0);
remove_action(\'wp_head\', \'adjacent_posts_rel_link\', 10, 0);
您可以在wp配置中更改插件目录和wp内容目录。php文件,但如果主题或任何插件没有使用正确的方法调用文件,则可能会出现一些问题。

define( \'WP_CONTENT_DIR\', $_SERVER[\'DOCUMENT_ROOT\'] . \'/new-wp-content\' );
将WP\\u CONTENT\\u URL设置为此目录的完整URI(无尾随斜杠),例如。

define( \'WP_CONTENT_URL\', \'http://example/new-wp-content\');
可选将WP\\u PLUGIN\\u DIR设置为此目录的完整本地路径(无尾随斜杠),例如。

define( \'WP_PLUGIN_DIR\', $_SERVER[\'DOCUMENT_ROOT\'] . \'/new-wp-content/new-plugins\' );
将WP\\u PLUGIN\\u URL设置为此目录的完整URI(无尾随斜杠),例如。

define( \'WP_PLUGIN_URL\', \'http://example/new-wp-content/new-plugins\');

PLUGINS

请注意,一些插件(如Akismat、All-in-One SEO、W3 Total Cache、Super Cache)和许多其他插件会向HTML输出添加注释。大多数都很容易修改以删除注释,但只要插件更新,您的更改就会被覆盖。

wp-includes

wp包括保存jquery和各种其他js文件的目录,主题或插件将使用wp\\u enqueue\\u script()调用这些文件。要更改此设置,您需要取消注册默认WordPress脚本并注册新位置。添加到函数。php:

function my_init() {
    if (!is_admin()) {
        // comment out the next two lines to load the local copy of jQuery
        wp_deregister_script(\'jquery\');
        wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\', false, \'1.3.2\');
        wp_enqueue_script(\'jquery\');
    }
}
add_action(\'init\', \'my_init\');
这需要对主题或插件使用的每个脚本进行处理。

SO网友:Rarst

经常遗漏的一位-删除readme.html 在WordPress根目录中。它不仅将安装标识为WP,而且还具有精确的版本。不要忘记在更新时重复。

相关问题:Prevent access or auto-delete readme.html, license.txt, wp-config-sample.php

SO网友:brasofilo

我一直使用Roots Theme method.<但是把它应用到那些外边的人身上通常会让人头疼。

所以,开始玩WP_CONTENT_* 常数。我认为这是一种不太容易出错的方法,这就是我目前正在研究的:

safari activity window
/muploads 文件夹/tthemes 文件夹和/t/t 是活动主题文件夹。该网站并不复杂,因此加载的资产很少

WP\\u无含量wp-config.php设置wp-content 到根(/public_html/) 网站的。

/** 
 Inside WP_CONTENT, the following folders should exist: 
 /languages , /mu-plugins , /plugins , /themes , /upgrade , /uploads  

 The WP_CONTENT_* definitions bellow REMOVE the existence of the /wp-content folder 
 and makes its contents reside in the ROOT of your site

 UTTERMOST attention is necessary when doing file maintenance activities in the server (i.e.: WP upgrades, new Webmaster...), 
 as the Themes and Plugins folders are meant to be renamed to /t and /p (serious candidates for unthoughful removal)

 PLEASE note:
 - we change the Plugins folder in WP_PLUGIN_* definitions
 - the Themes folder is changed by a MustUse Plugin 
   (/mu-plugins/set-extra-themes-folder.php)
 - the Uploads folder is changed in WordPress settings page 
   (http://example.com/wp-admin/options-media.php)
 - the hardcode path to be used in WP_CONTENT_DIR and WP_PLUGIN_DIR can be checked using an action inside the set-extra-themes-folder Plugin (check the comments in this file)
*/
define( \'WP_CONTENT_DIR\', \'/www/htdocs/username/public_html\' );
define( \'WP_CONTENT_URL\', \'http://www.example.com\' );

define( \'WP_PLUGIN_DIR\', \'/www/htdocs/username/public_html/p\' );
define( \'WP_PLUGIN_URL\', \'http://www.example.com/p\' );
我在[wp-hackers] - Any drawbacks in setting WP_CONTENT_DIR (and URL) to DOCUMENT_ROOT?, John Blackbourn、Mike Little和Otto非常友好地建议:

<支持>1
在过去的18个月里,我在一个网站上激活了这个结构,没有发现任何问题。与内容目录位置的任何更改一样,您需要仔细检查添加到站点的任何插件,不要假定内容目录位于wp-content.

<支持>2
网上有讨论$_SERVER[\'DOCUMENT_ROOT\'] 可能容易受到黑客攻击。在这种情况下,这是非常危险的,因为有很多地方require()include() WP_CONTENT_DIR . \'“某物”

<支持>3
在某些情况下$_SERVER 可以非常安全,但出于安全目的,最好始终将其视为不受信任的数据。对于这种特定情况,请对目录进行硬编码

新建主题文件夹/mu-plugins/set-extra-themes-folder.php因为没有WP_THEMES_* 常量,我们需要函数register_theme_directory() 注册包含主题的目录。“
尝试将额外目录设置为根目录,但结果很有趣(即:不起作用)。

<?php
/*
    Plugin Name: Set Extra Themes Folder
    Version: 1.0
    Description: Allows the directory - http://example.com/t - to be used as an extra theme\'s directory
    Plugin URI: http://wordpress.stackexchange.com/questions/1507
    Author: brasofilo
    Author URI: http://rodbuaiz.com
*/


/**
 * Remove the comment from the following line to know the correct path to put in register_theme_diretory()
*/
//add_action( \'admin_head\', \'brsfl_alert_directory_path\' );

function brsfl_alert_directory_path()
{
    echo \'<script type="text/javascript">
        alert("Directory: \'.$_SERVER[\'DOCUMENT_ROOT\'].\'");
    </script>\';
}


/**
 * The following will enable the directory "t" to be used as an EXTRA Themes directory
*/
register_theme_directory( \'/www/htdocs/username/public_html/t\' );


/**
 * De-registering default scripts in wp-includes for CDN ones
*/
add_action(\'init\', \'brsfl_init_scripts\');

function brsfl_init_scripts() 
{
    if ( !is_admin() ) 
    {
        wp_deregister_script( \'jquery\' );
        wp_deregister_script( \'swfobject\' );
        wp_register_script( \'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js\', false, \'1.7.1\' );
        wp_register_script( \'swfobject\', \'https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js\', false, null, true );
        wp_enqueue_script( \'jquery\' );
        wp_enqueue_script( \'swfobject\' );
    }
}
上载文件夹/wp-admin/options-media.php代替http://example.com/uploads, 会的http://example.com/m.
取消选中Organize my uploads into... 将为资源URL提供WPless外观
如果站点处于活动状态,则必须在数据库中执行搜索/替换,并且必须移动文件
uploads folder settings

插件和头部内容参见Cris_O 回答此问题(&A);A

自述文件。html参见Rarst 回答此问题(&A);A

其他步骤与往常一样,主题Mejungle主题可能会提示主题中的特定黑客
像。。。TimThumb 不工作(!!!lol!!!)。

SO网友:Mark Kaplun

唯一有效的答案是:不可能

这么多高投票率的答案。。。。是时候澄清事实了。事实是,这几乎是不可能的,即使是这样,生命也可能太短,无法投入精力。任何促进隐藏WP的步骤的答案都只是浪费您的时间,并会误导您认为您正在隐藏WP(这很荒谬)。

1) 问题并不明显wp-* URL、生成器元等。难题在于与wordpress相关的模式,而国产系统不会费心实现这些模式,例如作者页面、年、月、日页面,使用p=nnn作为有效参数,具有带有wordpress注释类、结构和链接名的注释表单,然后是缓存插件和yoast SEO的自我提升,可能还有许多其他插件,只有在检查HTML本身时才能看到。

2) 还有其他数不清的方法可以证明WP的存在(这是你无法克服的):

甚至php响应头(正如Dan Gayle在我的回答下面所指出的)也会返回特定的WP头。

任何人都可以查询十个根中的任何一个。php文件:site.com/wp-cron.phpsite.com/xmlrpc.php (或等等,您不能隐藏),标题答案将是200 而不是404 not found.

任何人都可以检查json端点以获得特定于WP的答案。

在HTML页面中,许多.css.js 文件中有一个明确表示WP的特定短语。

在页面HTML中,很容易找到元素/css类,如<div class="entry-content post-14"... 或etc(这是一个直接的提示,表明所使用的结构是WP)

在HTML页面中,您将很容易看到uploads 文件夹,或者即使您使用硬编码重命名该文件夹,则日期部分如下uploads/2018/05/image.jpg (甚至image-315x225.jpg) 显示了典型的WP结构。

由于现在许多站点都是使用多站点构建的,因此它使用。/site/2 在链接中。。。

ping到任何插件/主题自述文件(所有插件/主题自述文件都包含),如plugin-name/readme.txt, 正在返回状态200.

还有很多很多你(甚至专业人士)无法隐藏的事情,这些事情只会浪费你的时间!


conclusion

即使你努力清理所有表明这是wordpress的东西,你也可能需要在每次插件或核心升级后重做或至少重新检查。生命如此短暂。

你可能会误导一些探险家,但你不能躲避一个好的探险家。如果这是作为一种安全措施,那么这就是默默无闻的安全,这总是错误的。如果你只是为使用wordpress感到羞耻,那么让我告诉你一件事——没有人在乎,即使是极少数这样做的人也可能不知道如何自己解决。

你唯一应该关心的是,你要尽可能地保护WP,并监视它的定期更新。

SO网友:AndyBeard

您可以在一台服务器上安装WordPress,然后从另一台服务器上刮取您的内容,只包括您需要的内容。

如果你需要RSS,你也必须这样做。

实际上,这就像从代理或CDN提供静态页面,但只提供您想要提供的位。然后,您也可以只使用基于javascript的注释系统,如Disqs。

资源使用率非常低,因为服务器上没有为内容提供服务的数据库。

SO网友:mireille raad

您可以创建自定义地址以登录日志。通过不使用经典的“myblog.com/wp admin”路径访问仪表板This page 将帮助您创建秘密登录,这也有利于安全措施。

因此,在您的博客中添加wp admin的ppl无法猜测:)

SO网友:Avery Chan

除上述内容外,您还需要锁定对各种wp* 文件和目录。如果有人想知道你是否在运行WP,他们可以猜测你是否wp-settings.php 或者他们是否可以访问某个目录。返回403是不够的,因为它告诉用户资源存在;他们就是无法访问它。

我不是apache专家所以我问this question 服务器故障结束。

SO网友:Dan Gayle

不要忘记,随请求一起发送的许多http头信息可以识别您的站点是否在WordPress上运行。例如,如果您检查以下站点上的标题,很明显:

$ curl -I http://www.rollingstones.com/
Server: WP Engine/5.0

$ curl -I http://www.mattcutts.com
X-Powered-By: W3 Total Cache/0.9.1.3

$ curl -I http://blogs.reuters.com/us/
WP-Super-Cache: Served supercache file from PHP
其中一些是由服务器设置的,一些是由插件设置的,所以我没有办法说如何百分之百地删除它们,但是如果您使用的是PHP 5.3,您可以使用

header_remove("X-Foo"); (http://www.php.net/manual/en/function.header-remove.php)

在内容被挤出之前删除已知的PHP标头。我不能肯定地说应该把它放在哪里(也许其他人可以提供这些信息),但把它放在索引的最顶端可能是安全的。php之前发送到浏览器的任何内容。

SO网友:WP-Silver

如果您不熟悉php和mod\\u rewrite,这可能很难实现。我建议您查看我的回答部分。或者自己试试,您可以使用类似的方法隐藏wp内容/插件路径结构:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^modules/(.*) /wp-content/plugins/$1 [L,QSA]
</IfModule>
这将更改到/模块的路径。对其他结构使用类似的内容,可能需要进行一些高级重写,请参见http://httpd.apache.org/docs/current/mod/mod_rewrite.html 有关其他mod\\u重写信息。

如果你喜欢开箱即用的东西,WordPress存储库中很少有好的插件,有些是商业插件,也有免费插件,我建议你试试WP Hide & Security Enhancer. 这包括很多事情,并有助于改变几乎所有事情,使您的WordPress无法识别。以下是代码的一些功能:

阻止默认管理员Url以完全隐藏自定义wp登录结构。php文件名阻止默认wp登录。php阻止默认wp注册。php阻止XML-RPC API新建XML-RPC路径可调整主题url新建子主题url更改主题样式文件名URL删除wordpress版本删除rsd\\U链接元数据删除wpemoji等等。。

SO网友:NJENGAH

我不想重复这些编码选项,因为它们已经被详尽地介绍过了,我知道另一个可行的选项是使用一个隐藏wp的插件。我以前使用过这个插件,达到了令人满意的标准。它叫隐藏我的WordPress。

SO网友:cjbj

大多数答案集中在隐藏页面源代码中的WordPress,但在此之前,WP已经在标准安装的http标头中暴露了自己。只需在以下站点上尝试您自己的站点web-sniffer (假装是IE 6并要求提供http 1.0标头),您将看到其中的返回是:

<http://www.example.com/wp-json/>; rel="https://api.w.org/"
后者是指向Wordpress.org API. 自从REST API包含在WP 4.4中以来,它就一直存在。您可以在functions.php:

remove_action( \'template_redirect\', \'rest_output_link_header\', 11, 0 );
许多插件,比如Jetpack的短链接,也可以在http头中插入链接。他们可以这样做,因为WP有HTTP API, 它允许您操作标题。如果您在过程中添加操作的时间足够晚,则可以使用此接口删除插件的所有标题设置。

最后,您可以使用.htaccess header interface 拦截WP正在做的任何事情。例如,您可以通过包含此行来阻止发送任何链接头:

<IfModule mod_headers.c>
Header unset Link
</IfModule>

SO网友:James

您可以自定义主题以排除所有WordPress信息。还要删除元小部件和任何输出平台信息的小部件。

就我个人而言,我更喜欢通过展示我在使用WordPress来表达我的感激之情。

结束

相关推荐

Security and .htaccess

大约一个月前,我在一个与爱好相关的托管服务器上创建了一个WordPress博客。所以,我目前还不熟悉这一点。由于我担心安全性,我做的一件事就是安装插件WP安全扫描。根据插件结果,我的网站会被检查出来,但我在结果中看到的是一个红旗:文件。wp admin中不存在htaccess/(我在那里ssh了,它不存在)好的,所以我在这个问题上做了大量的搜索,找到了太多的信息。htaccess。我在WordPress上经历了强化WordPress。org网站等,也遇到了这篇文章:http://digwp.com/201